Element 'Granules': This element is not expected. Expected is ( Granule )

When trying to process a granule from product S2A_OPER_PRD_MSI1C_PDMC_20161214T232140_R010_V20151021T142012_20151021T142012.SAFE (UUID b8db9d64-1ff5-45b6-9aca-4615ef7af757) with sen2cor 2.3.1, I get an error at the very end (after exporting band TCI):

Syntax error in metadata, see report file for details.
Parsing error:
Schema file: S2-PDGS-TAS-DI-PSD-V14.2_Schema/S2_User_Product_Level-2A_Metadata.xsd
Details: Element ‘Granules’: This element is not expected. Expected is ( Granule ).

I see the generated band files in the output directory, but the file S2A_USER_SCL_L2A_TL_SGS (scene classification) is missing, since the error occurs before its export. This is a problem for cloud masking.

The error seems to be specific to this product, since I can process others fine. Perhaps it’s related to the fact that this is one of the first released Sentinel-2 products.

After a bit of investigation, looks like sen2cor is trying to apply the wrong schema to the file. The file S2-PDGS-TAS-DI-PSD-V14.2_Schema/S2_User_Product_Level-2A_Metadata.xsd refers to DICO/14/PDGS/dimap/ which defines a different structure than that granule’s XML file is in. The correct structure is either in DICO/12/PDGS/dimap/ of schema 14.2, or in S2-PDGS-TAS-DI-PSD-V13.1_Schema. Probably the latter is more correct. But how do I tell sen2cor to apply this older version of the schema?