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