Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 473 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
473
Dung lượng
4,26 MB
Nội dung
Table of Contents
Index
Full Description
Reviews
Reader reviews
Errata
XML Schema
Eric van der Vlist
Publisher: O'Reilly
First Edition June 2002
ISBN: 0-596-00252-1, 400 pages
The W3C's XMLSchema offers a powerful set of tools for defining
acceptable XML document structures and content. While schemas are
powerful, that power comes with substantial complexity. This book
explains XMLSchema foundations, a variety of different styles for writing
schemas, simple and complex types, datatypes and facets, keys,
extensibility, documentation, design choices, best practices, and limitations.
Complete with references, a glossary, and examples throughout.
Table of Content
Table of Content 2
Preface 8
Who Should Read This Book? 8
Who Should Not Read This Book? 8
About the Examples 8
Organization of This Book 9
Conventions Used in This Book 11
How to Contact Us 11
Acknowledgments 12
Chapter 1. Schema Uses and Development 13
1.1 What Schemas Do for XML 13
1.2 W3C XMLSchema 15
Chapter 2. Our First Schema 17
2.1 The Instance Document 17
2.2 Our First Schema 18
2.3 First Findings 24
Chapter 3. Giving Some Depth to Our First Schema 26
3.1 Working From the Structure of the Instance Document 26
3.2 New Lessons 28
Chapter 4. Using Predefined Simple Datatypes 32
4.1 Lexical and Value Spaces 32
4.2 Whitespace Processing 34
4.3 String Datatypes 34
4.4 Numeric Datatypes 42
4.5 Date and Time Datatypes 45
4.6 List Types 53
4.7 What About anySimpleType? 53
4.8 Back to Our Library 53
Chapter 5. Creating Simple Datatypes 56
5.1 Derivation By Restriction 56
5.2 Derivation By List 73
5.3 Derivation By Union 75
5.4 Some Oddities of Simple Types 76
5.5 Back to Our Library 79
Chapter 6. Using Regular Expressions to Specify Simple Datatypes 82
6.1 The Swiss Army Knife 82
6.2 The Simplest Possible Patterns 82
6.3 Quantifying 83
6.4 More Atoms 84
6.5 Common Patterns 92
6.6 Back to Our Library 96
Chapter 7. Creating Complex Datatypes 99
7.1 Simple Versus Complex Types 99
7.2 Examining the Landscape 99
7.3 Simple Content Models 100
7.4 Complex Content Models 103
7.5 Mixed Content Models 127
7.6 Empty Content Models 131
7.7 Back to Our Library 133
7.8 Derivation or Groups 138
Chapter 8. Creating Building Blocks 139
8.1 Schema Inclusion 139
8.2 Schema Inclusion with Redefinition 141
8.3 Other Alternatives 146
8.4 Simplifying the Library 148
Chapter 9. Defining Uniqueness, Keys, and Key References 153
9.1 xs:ID and xs:IDREF 153
9.2 XPath-Based Identity Checks 154
9.3 ID/IDREF Versus xs:key/xs:keyref 161
9.4 Using
xs:key and xs:unique As Co-occurrence Constraints 163
Chapter 10. Controlling Namespaces 166
10.1 Namespaces Present Two Challenges to Schema Languages 166
10.2 Namespace Declarations 169
10.3 To Qualify Or Not to Qualify? 171
10.4 Disruptive Attributes 177
10.5 Namespaces and XPath Expressions 178
10.6 Referencing Other Namespaces 179
10.7 Schemas for XML, XML Base and XLink 182
10.8 Namespace Behavior of Imported Components 188
10.9 Importing Schemas with No Namespaces 190
10.10 Chameleon Design 192
10.11 Allowing Any Elements or Attributes from a Particular Namespace 194
Chapter 11. Referencing Schemas and Schema Datatypes in XML Documents 197
11.1 Associating Schemas with Instance Documents 197
11.2 Defining Element Types 201
11.3 Defining Nil (Null) Values 206
11.4 Beware the Intrusive Nature of These Features 208
Chapter 12. Creating More Building Blocks Using Object-Oriented Features 209
12.1 Substitution Groups 209
12.2 Controlling Derivations 217
Chapter 13. Creating Extensible Schemas 225
13.1 Extensible Schemas 225
13.2 The Need for Open Schemas 233
Chapter 14. Documenting Schemas 236
14.1 Style Matters 236
14.2 The W3C XMLSchema Annotation Element 237
14.3 Foreign Attributes 242
14.4 XML 1.0 Comments 244
14.5 Which One and What For? 244
Chapter 15. Elements Reference Guide 246
xs:all(outside a group) 247
xs:all(within a group) 249
xs:annotation 250
xs:any 252
xs:anyAttribute 255
xs:appinfo 257
xs:attribute(global definition) 260
xs:attribute(reference or local definition) 262
xs:attributeGroup(global definition) 265
xs:attributeGroup(reference) 266
xs:choice(outside a group) 267
xs:choice(within a group) 269
xs:complexContent 270
xs:complexType(global definition) 272
xs:complexType(local definition) 274
xs:documentation 276
xs:element(global definition) 278
xs:element(within xs:all) 282
xs:element(reference or local definition) 285
xs:enumeration 289
xs:extension(simple content) 291
xs:extension(complex content) 293
xs:field 295
xs:fractionDigits 297
xs:group(definition) 299
xs:group(reference) 301
xs:import 303
xs:include 306
xs:key 308
xs:keyref 310
xs:length 314
xs:list 316
xs:maxExclusive 318
xs:maxInclusive 320
xs:maxLength 322
xs:minExclusive 324
xs:minInclusive 326
xs:minLength 328
xs:notation 330
xs:pattern 332
xs:redefine 334
xs:restriction(simple type) 336
xs:restriction(simple content) 338
xs:restriction(complex content) 340
xs:schema 342
xs:selector 344
xs:sequence(outside a group) 346
xs:sequence(within a group) 348
xs:simpleContent 349
xs:simpleType(global definition) 350
xs:simpleType(local definition) 352
xs:totalDigits 354
xs:union 356
xs:unique 358
xs:whiteSpace 360
Chapter 16. Datatype Reference Guide 362
xs:anyURI 363
xs:base64Binary 365
xs:boolean 367
xs:byte 368
xs:date 369
xs:dateTime 371
xs:decimal 373
xs:double 374
xs:duration 376
xs:ENTITIES 378
xs:ENTITY 380
xs:float 381
xs:gDay 383
xs:gMonth 385
xs:gMonthDay 387
xs:gYear 389
xs:gYearMonth 390
xs:hexBinary 392
xs:ID 394
xs:IDREF 396
xs:IDREFS 398
xs:int 400
xs:integer 402
xs:language 403
xs:long 404
xs:Name 405
xs:NCName 406
xs:negativeInteger 407
xs:NMTOKEN 408
xs:NMTOKENS 409
xs:nonNegativeInteger 411
xs:nonPositiveInteger 412
xs:normalizedString 413
xs:NOTATION 415
xs:positiveInteger 417
xs:QName 418
xs:short 420
xs:string 421
xs:time 423
xs:token 424
xs:unsignedByte 426
xs:unsignedInt 427
xs:unsignedLong 428
xs:unsignedShort 429
Appendix A. XMLSchema Languages 430
A.1 What Is a XMLSchema Language? 430
A.2 Classification of XMLSchema Languages 430
A.3 A Short History of XMLSchema Languages 430
A.4 Sample Application 430
A.5 XML DTDs 430
A.6 W3C XMLSchema 430
A.7 RELAX NG 430
A.8 Schematron 430
A.9 Examplotron 430
A.10 Decisions 430
A.1 What Is a XMLSchema Language? 431
A.2 Classification of XMLSchema Languages 433
A.3 A Short History of XMLSchema Languages 434
A.4 Sample Application 437
A.5 XML DTDs 439
A.6 W3C XMLSchema 440
A.7 RELAX NG 441
A.8 Schematron 444
A.9 Examplotron 445
A.10 Decisions 446
Appendix B. Work in Progress 448
B.1 W3C Projects 448
B.2 ISO: DSDL 450
B.3 Other 450
Glossary 453
A 453
B 454
C 454
D 456
E 458
F 459
G 459
I 460
L 460
M 461
N 461
P 462
Q 463
R 463
S 464
T 466
U 467
V 468
W 468
X 470
Colophon 473
Preface
As developers create new XML vocabularies, they often need to describe those
vocabularies to share, define, and apply them. This book will guide you through W3C
XML Schema, a set of Recommendations from the World Wide Web Consortium (W3C).
These specifications define a language that you can use to express formal descriptions of
XML documents using a generally object-oriented approach. Schemas can be used for
documentation, validation, or processing automation. W3C XMLSchema is a key
component of Web Services specifications such as SOAP and WSDL, and is widely used
to describe XML vocabularies precisely.
With this power comes complexity. The Recommendations are long, complex, and
generally difficult to read. The Primer helps, of course, but there are many details and
style approaches to consider in building schemas. This book attempts to provide an
objective, and sometimes critical, view of the tools W3C XMLSchema provides, helping
you to discover the possibilities of schemas while avoiding potential minefields.
Who Should Read This Book?
Read this book if you want to:
• Create W3C XMLSchema schemas using a text editor, XML editor, or a W3C
XML Schema IDE or editor.
• Understand and modify existing W3C XMLSchema schemas.
You should already have a basic understanding of XML document structures and how to
work with them.
Who Should Not Read This Book?
If you are just using an XML application using a W3C XMLSchema schema, you
probably do not need to deal with the subtleties of the Recommendation.
About the Examples
All the examples in this book have been tested with the XSV and Xerces-J
implementations of W3C XMLSchema running Linux (the Debian "sid" distribution). I
have chosen these tools for their high level of conformance to the Recommendation (the
best ones according to the tests I have performed); the vast majority runs without error on
these implementations—however, the Recommendation is sometimes fuzzy and difficult
to understand, and there are some examples that give different results with different
implementations. These conform to my own understanding of the Recommendation as
discussed on the xmlschema-dev mailing list (the archives are available at
http://lists.w3.org/Archives/Public/xmlschema-dev
).
Organization of This Book
Chapter 1
This chapter examines why we would want to bring a new XMLSchema
language onto the XML scene and what basic benefits W3C XMLSchema offers.
Chapter 2
This chapter presents a first complete schema, introducing the basic features of
the language in a very "flat" style.
Chapter 3
With W3C XML Schema, style matters. This chapter gives a second example of a
complete schema, describing the same class of documents, and written in a
completely different style called "Russian doll design."
Chapter 4
W3C XMLSchema also provides datatyping. In this chapter, we explore how
these types can be bound to the content of our document.
Chapter 5
This chapter guides you through the process of defining your own simple types.
Chapter 6
This chapter explores how to constrain new datatypes using regular expressions.
Chapter 7
Now that we know all about simple types, this chapter explores the different
complex types that can be used to define structures within an XML document.
Chapter 8
This chapter shows how to organize schema tools into reusable building blocks.
Chapter 9
In addition to content (simple types) and structure (complex types), W3C XML
Schema can constrain the identifiers and references within a document. We
explore this feature in this chapter.
Chapter 10
Support for XML namespaces is one of the top requirements of W3C XML
Schema. This chapter explains how this requirement has been implemented and
its implications.
Chapter 11
This chapter shows how schema information may be embedded in the XML
instance documents.
Chapter 12
This chapter explains how more building blocks may be defined, by playing with
namespaces and justifying the object-oriented qualification given to W3C XML
Schema.
Chapter 13
This chapter gives some hints to write extensible and open schemas.
Chapter 14
This chapter shows how schemas can be documented and made more readable,
either by humans or programs.
Chapter 15
This is a quick reference guide to the elements used by W3C XML Schema.
Chapter 16
This is a quick reference guide to the W3C XMLSchema predefined types.
Appendix A
W3C XMLSchema is not the only language of its kind. Here we provide a short
history of this not-so-new family and see some of its competitors.
Appendix B
If you want to look ahead at what's to come from the W3C, you may be interested
in this list of promising developments yet to be done in relation with W3C XML
Schema.
Glossary
[...]... an XML vocabulary to describe XML vocabularies The W3C's XMLSchema Working Group spent two years developing two normative Recommendations, XMLSchema Part 1: Structures, and XMLSchema Part 2: Datatypes, along with a nonnormative Recommendation, XMLSchema Part 0: Primer W3C XMLSchema is designed to support all of these applications An initial set of requirements, formally described in the XML Schema. .. Requirements Note (http://www.w3.org/TR/NOTE -xml- schema- req), listed a wide variety of usage scenarios for schemas as well as for the design principles that guided its creation In the rest of this book, we explore the details of W3C XMLSchema and its many capabilities, focusing on how to apply it to specific XML document situations Chapter 2 Our First Schema Starting with a simple example (a limited... xs:element(global definition), included directly under the xs :schema document element: / The value used to reference the datatype (xs:string) is prefixed by xs, the prefix associated with W3C XMLSchema This means that xs:string is a predefined W3C XML Schema datatype The same can be done for all the... lang="en"> Being a Dog Is a Full-Time Job Charles M Schulz 192 2-1 1-2 6 200 0-0 2-1 2 Peppermint Patty 196 6-0 8-2 2 bold, brash and tomboyish Snoopy 195 0-1 0-0 4 extroverted... lang We will build our first schema by defining each element in turn under our schema document element (named, unsurprisingly, schema) , which belongs to the W3C XMLSchema namespace (http://www.w3.org/2001/XMLSchema) and is usually prefixed as "xs." Before we start, we need to classify the elements and, for this exercise, give some key definitions for understanding how W3C XML Schema does this classification... Documentation XML schemas are frequently used to document XML vocabularies, even when validation isn't a requirement Schemas provide a formal description of the vocabulary with a precision and conciseness that can be difficult to achieve in prose It is very unusual to publish the specification of a new XML vocabulary without attaching some form of XMLschema The machine-readability of schemas gives... XML developers quickly outgrew the capabilities DTDs provide An alternative schema proposal, XML- Data, was even submitted to the W3C before XML 1.0 was a Recommendation The World Wide Web Consortium (W3C), keeper of the XML specification, sought to build a new language for describing XML documents It needed to provide more precision in describing document structures and their contents, to support XML. .. binding tools rely on a model formalized in a schema of some kind He describes this category as "usually more flexible in the mappings they can support." Many different languages, either specific or general-purpose XML schema languages, define these bindings W3C XMLSchema has a lot of traction in this area; many databinding tools were started to support W3C XMLSchema for even its early releases, well... document: < ?xml version="1.0"?> 0836217462 Being a Dog Is a Full-Time Job Charles M Schulz 192 2-1 1-2 6 200 0-0 2-1 2 Snoopy 195 0-1 0-0 4 ... 1.1 What Schemas Do for XML An XML schema language is a formalization of the constraints, expressed as rules or a model of structure, that apply to a class of XML documents In many ways, schemas serve as design tools, establishing a framework on which implementations can be built Since formalization is a necessary ground for software designers, formalizing the constraints and structures of XML instance . you want to: • Create W3C XML Schema schemas using a text editor, XML editor, or a W3C XML Schema IDE or editor. • Understand and modify existing W3C XML Schema schemas. You should already. A.5 XML DTDs 430 A.6 W3C XML Schema 430 A.7 RELAX NG 430 A.8 Schematron 430 A.9 Examplotron 430 A.10 Decisions 430 A.1 What Is a XML Schema Language? 431 A.2 Classification of XML Schema. xs:unsignedShort 429 Appendix A. XML Schema Languages 430 A.1 What Is a XML Schema Language? 430 A.2 Classification of XML Schema Languages 430 A.3 A Short History of XML Schema Languages 430 A.4