| Introduction to XML for Bioinformatics | p. 1 |
| Introduction to XML | p. 2 |
| XML Defined | p. 2 |
| Origins of XML | p. 4 |
| The XML Family of Specifications | p. 5 |
| Web Services Defined | p. 6 |
| Using XML for Biological Data Exchange | p. 7 |
| Case Study: The Distributed Annotation System | p. 8 |
| XML Formats for Bioinformatics | p. 11 |
| Evaluating XML Usage in Bioinformatics | p. 12 |
| Advantages of XML | p. 12 |
| Disadvantages of XML | p. 13 |
| Useful Resources | p. 14 |
| Articles | p. 14 |
| Web Site and Web Resources | p. 15 |
| Fundamentals of XML and BSML | p. 17 |
| Getting Started with BSML | p. 17 |
| Using Genomic Workspace | p. 20 |
| Fundamentals of XML | p. 22 |
| Working with Elements | p. 22 |
| Working with Attributes | p. 23 |
| The XML Prolog | p. 24 |
| Comments | p. 24 |
| Processing Instructions | p. 24 |
| Character Encoding | p. 25 |
| CDATA Sections | p. 26 |
| Creating Well-Formed XML Documents | p. 27 |
| Creating Valid XML Documents | p. 28 |
| Working with XML Parsers | p. 30 |
| Fundamentals of XML Namespaces | p. 31 |
| Why We Need XML Namespaces | p. 31 |
| Declaring and Using XML Namespaces | p. 33 |
| Declaring a Default Namespace | p. 34 |
| Fundamentals of BSML | p. 35 |
| BSML File Formats | p. 36 |
| BSML Document Structure | p. 36 |
| Representing Sequences | p. 38 |
| Representing Sequence Features | p. 39 |
| Retrieving Live BSML Data via XEMBL | p. 45 |
| Useful Resources | p. 47 |
| DTDs for Bioinformatics | p. 49 |
| Introduction to DTDs | p. 49 |
| A Bird's-Eye View: Protein DTD | p. 50 |
| Validating XML Documents | p. 52 |
| Document Type Declarations | p. 55 |
| Declaring Elements | p. 57 |
| EMPTY | p. 57 |
| ANY | p. 58 |
| #PCDATA | p. 58 |
| Child Elements | p. 59 |
| Mixed Content | p. 60 |
| Declaring Attributes | p. 61 |
| Attribute Types | p. 62 |
| Attribute Behaviors | p. 65 |
| Working with Entities | p. 66 |
| General Entities | p. 66 |
| Parameter Entities | p. 69 |
| Entity Summary | p. 70 |
| Conditional DTD Sections | p. 70 |
| Case Study: NCBI TinySeq | p. 72 |
| NCBI and XML | p. 72 |
| The TinySeq DTD | p. 73 |
| XML Schemas for Bioinformatics | p. 81 |
| Introduction to XML Schemas | p. 81 |
| XML Schemas for Bioinformatics | p. 82 |
| Essential Concepts: Representing Protein Data | p. 82 |
| The [left angle bracket]schema[right angle bracket] element | p. 84 |
| Schema Documentation | p. 86 |
| Simple Types vs. Complex Types | p. 86 |
| Global Elements vs. Local Elements | p. 86 |
| Creating Instance Documents | p. 87 |
| Validating Instance Documents | p. 88 |
| Working with Simple Types | p. 89 |
| Built-in Schema Types | p. 89 |
| Working with Facets | p. 91 |
| Working with Complex Types | p. 94 |
| Introduction to Complex Types | p. 94 |
| Declaring Empty Element Types | p. 96 |
| Declaring Mixed Element Types | p. 97 |
| Occurrence Constraints | p. 98 |
| Declaring Default Values | p. 99 |
| Compositors: Sequence and Choice | p. 100 |
| Defining Named Complex Types | p. 102 |
| All Together Now! | p. 103 |
| Basic Namespace Issues | p. 103 |
| Case Study: The HUPO PSI Molecular Interaction Format | p. 107 |
| PSI-MI Schema Overview | p. 108 |
| A Sample PSI-MI Instance Document | p. 109 |
| Working with the PSI-MI Controlled Vocabulary | p. 113 |
| Parsing NCBI XML in Perl | p. 115 |
| Introduction to XML Parsing in Perl | p. 115 |
| Tree-Based vs. Event-Based XML Parsers | p. 116 |
| Installing Modules via CPAN | p. 117 |
| The Simple API for XML (SAX) | p. 118 |
| Introduction to SAX | p. 118 |
| SAX and Bioinformatics Applications | p. 118 |
| SAX 2.0 | p. 119 |
| Introduction to XML::SAX | p. 119 |
| Using NCBI EFetch and XML::SAX | p. 125 |
| The Document Object Model (DOM) | p. 129 |
| DOM Traversal with XML::LibXML | p. 129 |
| Validating XML Documents with XML::LibXML | p. 132 |
| Creating New Documents with XML::LibXML | p. 132 |
| Using NCBI EFetch and XML::LibXML | p. 132 |
| The Distributed Annotation System (DAS) | p. 137 |
| Genome Annotation | p. 137 |
| Introduction to DAS | p. 140 |
| The WormBase DAS Viewer | p. 141 |
| DAS Protocol Overview | p. 141 |
| Getting Started | p. 144 |
| DAS Requests | p. 145 |
| DAS Responses | p. 146 |
| X-DAS-Capabilities Header | p. 148 |
| DAS Command Reference | p. 149 |
| Retrieving Data Sources | p. 149 |
| Retrieving Entry Points | p. 151 |
| Retrieving Sequence Data | p. 153 |
| Retrieving Annotations | p. 155 |
| Working with Reference Maps | p. 168 |
| Traversing the Ensembl Reference Map | p. 169 |
| Working with Evolving Reference Maps | p. 171 |
| The Future of DAS | p. 172 |
| Parsing DAS Data with SAX | p. 175 |
| Introduction to SAX | p. 175 |
| A First Example | p. 175 |
| The XMLReader Interface | p. 179 |
| The ContentHandler Interface | p. 182 |
| Extending the DefaultHandler | p. 184 |
| Using InputSource Objects | p. 186 |
| Validating XML Documents | p. 188 |
| Checking for Well-Formedness | p. 188 |
| Validating XML Documents: Overview | p. 190 |
| Activating the SAX Validation Feature | p. 191 |
| The ErrorHandler Interface | p. 191 |
| Validating against XML Schemas | p. 196 |
| Elements, Attributes, and Namespaces | p. 197 |
| Working with Elements and Namespaces | p. 197 |
| Working with Attributes | p. 202 |
| Building Custom Data Structures with SAX | p. 204 |
| Parsing DAS Feature Data | p. 204 |
| Integrating with BioJava | p. 208 |
| Parsing DAS Data with JDOM | p. 215 |
| JDOM Basics | p. 215 |
| JDOM Package Overview | p. 215 |
| Parsing XML Documents with JDOM | p. 216 |
| Parsing DAS Documents with JDOM | p. 221 |
| Introduction to the JDOM Element API | p. 221 |
| Traversing DAS Documents | p. 224 |
| Parsing DAS dsn Documents | p. 229 |
| Creating DAS Documents with JDOM | p. 233 |
| Creating New Documents | p. 233 |
| Creating New Elements | p. 234 |
| A Complete Example | p. 235 |
| Building the JDAS Library | p. 238 |
| Using JDAS | p. 238 |
| The JDAS Source Code | p. 243 |
| Web Services for Bioinformatics | p. 247 |
| Introduction to Web Services | p. 247 |
| Web Services Defined | p. 247 |
| Architectural Options | p. 250 |
| Case Study: Introduction to the NCI caBIO Project | p. 251 |
| Background: Connecting to caBIO via the Java RMI Interface | p. 253 |
| Introduction to REST-Based Web Services | p. 257 |
| Introduction to REST | p. 257 |
| Connecting to the caBIO REST Interface | p. 258 |
| Example Application: Command Line caBIO Browser | p. 262 |
| Introduction to SOAP | p. 267 |
| SOAP Overview | p. 268 |
| Constructing SOAP Messages | p. 270 |
| Transporting SOAP via HTTP | p. 273 |
| Introduction to Apache Axis | p. 275 |
| Building a Web Service with Axis | p. 276 |
| Connecting to caBIO with Axis | p. 281 |
| Appendix | p. 283 |
| Nucleotide Base Codes | p. 283 |
| Amino Acid Codes | p. 283 |
| Bibliography | p. 285 |
| Index | p. 291 |
| Table of Contents provided by Ingram. All Rights Reserved. |