| Effective XML |
| Part I: Syntax |
| Item 1: Include an XML declaration |
| Item 3: Stay with XML 1.0 |
| Part II: Structure |
| The XML Stack |
| Item 14: Allow All XML syntax |
| Item 9: Distinguish text from markup |
| The reverse problem |
| Item 10: White space matters |
| Item 11: Make structure explicit through markup |
| Item 12: Store metadata in attributes |
| Item 13: Remember mixed content |
| What you really want is this: |
| What people do is this: |
| Item 16: Prefer URLs to unparsed entities and notations |
| Part III: Semantics |
| Item 17: Use processing instructions for process-specific content |
| Processing instructions are not appropriate when: |
| Item 18: Include all information in instance documents |
| Item 19: Encode binary data using quoted printable and/or Base64 |
| Item 20-22: Use namespaces for modularity and extensibility |
| Item 23: Reuse XHTML for generic narrative content |
| Item 24: Choose the right schema language for the job |
| Item 25: Pretend there's no such thing as the PSVI |
| Item 28: Use only what you need |
| Item 29: Always use a parser |
| Item 30: Layer Functionality |
| Item 31-33: Program to standard APIs |
| Item 34: Read the complete DTD |
| Item 35: Navigate with XPath |
| Item 36: Serialize XML with XML |
| Item 37: Validate inside your program with schemas |
| Part IV: Implementation |
| Item 38: Write documents in Unicode |
| Item 40: Avoid Vendor Lockin; Beware |
| Item 41: Hang on to your relational database |
| Item 42: Document Namespaces with RDDL |
| Item 43: Preprocess XSLT on the server side |
| Item 44: Serve XML+CSS to the client |
| Item 45: Pick the correct MIME type |
| Item 46: TagSoup Your HTML |
| Item 47: Catalog common resources |
| Item 50: Compress if space is a problem |
| To Learn More |