1. One or more non-transitory storage media storing one or more sequences of instructions for building an in-memory model of an extensible markup language (XML) schema, which instructions, when executed by one or more processors, cause the one or more processors to perform steps comprising: initializing, within one or more memory blocks of a plurality of memory blocks that have been allocated in volatile memory, a hash table and an array for storing a particular set of schema elements of the XML schema, wherein the particular set of schema elements is one of: schema elements that define XML element types in the XML schema, the XML element types each having one or more subtypes; or schema elements that define substitution groups in the XML schema; for each schema element of the particular set of schema elements, storing the schema element as part of the in-memory model by performing steps comprising: accessing the schema element, wherein the schema element has a plurality of sub-elements; storing the plurality of sub-elements as a plurality of entries into a first portion of the array; storing, into a second portion of the array, a plurality of pointers that respectively reference the plurality of entries; and storing one or more entries into the hash table by using an identifier of the schema element as a hash key, wherein the one or more entries in the hash table indicate one or more of the plurality of pointers stored in the second portion of the array.