A fundamental problem in knowledge representation is how to revise knowledge when new, contradictory information is obtained. This paper formulates some desirable principles of knowledge revision, and investigates a new theory of knowledge revision that realizes these principles. This theory of revision can be explained at the knowledge level, in purely model-theoretic terms. A syntactic characterization of the proposed approach is also presented. We illustrate its application through examples and compare it with several other approaches.