Styling OS MasterMap can be done in a number of different ways.
Option 1 - use the current feature code column which only has hundred or so style rules.
Option 2 - or style based on four key attributes - descriptive group, descriptive term, physical presence and make there are almost 4000 permutations.
It is also dependent on what translator or loader you have used to translate your data. Some create their own style column.
So for our web services we wrote some code that creates a new style column, os_cat, that is populated based on the Option 2. But have just one attribute to style off which is significantly easier to create a style sheet for and it's more performant.
When you download the SLD zip there should be a couple of text files that contain the SQL code to create that new os_cat column? internally we use the Astun Technology loader so the code matches what the data is after it has been loaded into a PostGIS database.
I see you saw my answer regarding the OS VectorMap Local SLD use - Styling OS Vectormap Local in QGIS?
So you have a few choices
1) Load OS MasterMap into a database, then use the SQL files to create the new style column and then use amended SLD files where you have removed the featuretypestyle
You can find the SQL I use here
https://gist.github.com/tjmgis/6184358
There are lots of different databases that you could use and a number of loaders for both open source and proprietary setups.
(On my iPad so struggling to copy and paste all of the content from the gist to here so maybe a mod could edit)
2) Translate the OS MasterMap GML files to ESRI Shapefiles, manually create a new os_cat column and populate it using the field calculator which seems to support writing CASE statements -
Elseif Conditional Statement in QGIS Field Calculator
Again there are open source options and proprietary.
Hope this helps
Tim
The following is a guide for post processing OSMM Cartographic Text so that it can be rendered within QGIS.
Firstly, we need to create a new anchor column which tells QGIS which position to locate the text.
ALTER TABLE osmm.cartographictext ADD COLUMN anchor VARCHAR;
COMMIT;
update osmm.cartographictext set anchor = 'Below Left' where anchorposition = 0;
update osmm.cartographictext set anchor = 'Left' where anchorposition = 1;
update osmm.cartographictext set anchor = 'Above Left' where anchorposition = 2;
update osmm.cartographictext set anchor = 'Below' where anchorposition = 3;
update osmm.cartographictext set anchor = 'Over' where anchorposition = 4;
update osmm.cartographictext set anchor = 'Above' where anchorposition = 5;
update osmm.cartographictext set anchor = 'Below Right' where anchorposition = 6;
update osmm.cartographictext set anchor = 'Right' where anchorposition = 7;
update osmm.cartographictext set anchor = 'Above Right' where anchorposition = 8;
COMMIT;
ALTER TABLE osmm.cartographictext ADD COLUMN vertical VARCHAR;
COMMIT;
ALTER TABLE osmm.cartographictext ADD COLUMN horizontal VARCHAR;
COMMIT;
update osmm.cartographictext set vertical = 'Bottom' where anchorposition = 0;
update osmm.cartographictext set horizontal = 'Left' where anchorposition = 0;
update osmm.cartographictext set vertical = 'Half' where anchorposition = 1;
update osmm.cartographictext set horizontal = 'Left' where anchorposition = 1;
update osmm.cartographictext set vertical = 'Top' where anchorposition = 2;
update osmm.cartographictext set horizontal = 'Left' where anchorposition = 2;
update osmm.cartographictext set vertical = 'Bottom' where anchorposition = 3;
update osmm.cartographictext set horizontal = 'Center' where anchorposition = 3;
update osmm.cartographictext set vertical = 'Half' where anchorposition = 4;
update osmm.cartographictext set horizontal = 'Center' where anchorposition = 4;
update osmm.cartographictext set vertical = 'Top' where anchorposition = 5;
update osmm.cartographictext set horizontal = 'Center' where anchorposition = 5;
update osmm.cartographictext set vertical = 'Bottom' where anchorposition = 6;
update osmm.cartographictext set horizontal = 'Right' where anchorposition = 6;
update osmm.cartographictext set vertical = 'Half' where anchorposition = 7;
update osmm.cartographictext set horizontal = 'Right' where anchorposition = 7;
update osmm.cartographictext set vertical = 'Top' where anchorposition = 8;
update osmm.cartographictext set horizontal = 'Right' where anchorposition = 8;
COMMIT;
Next we need to add a new column to tell QGIS what colour the text should be.
ALTER TABLE osmm.cartographictext ADD COLUMN fontcolour VARCHAR;
COMMIT;
update osmm.cartographictext set fontcolour = '#000000';
COMMIT;
update osmm.cartographictext set fontcolour = '#0099FF' where descriptivegroup = '{"Inland Water"}';
update osmm.cartographictext set fontcolour = '#0099FF' where descriptivegroup = '{"Tidal Water"}';
update osmm.cartographictext set fontcolour = '#FF00FF' where descriptivegroup = '{"Political Or Administrative"}';
COMMIT;
Next we add a new column for the font family name, this is based on the attribute 'font' already within the data.
ALTER TABLE osmm.cartographictext ADD COLUMN fontname VARCHAR;
COMMIT;
update osmm.cartographictext set fontname = 'Times New Roman' where font = 0;
update osmm.cartographictext set fontname = 'Arial' where font = 1;
update osmm.cartographictext set fontname = 'Arial' where font = 2;
COMMIT;
ALTER TABLE osmm.cartographictext ADD COLUMN orientationdegrees VARCHAR;
COMMIT;
update osmm.cartographictext set orientationdegrees = (orientation/10);
COMMIT;
Also need X Y coordinates so we can use the anchor position
ALTER TABLE osmm.cartographictext ADD COLUMN x_coordinate NUMERIC;
COMMIT;
update osmm.cartographictext set x_coordinate = ST_X(wkb_geometry);
COMMIT;
ALTER TABLE osmm.cartographictext ADD COLUMN y_coordinate NUMERIC;
COMMIT;
update osmm.cartographictext set y_coordinate = ST_Y(wkb_geometry);
COMMIT;
After post processing the data can now be rendered in QGIS using the data drive styling functions.