You can use <scale> or <zoom> to control the sizes at which map layers appear.
In the <scale> element the attributes min and max are scale denominators: that is, 25000 really means 1:25000.
In the <zoom> element the attributes min and max are zoom levels as used in OpenStreetMap maps: 0 is the whol world, and 20 is a very large scale.
You can use these elements to enclose groups of layers, groups of conditions, individual tags, in fact anything you like, as long as tags are still nested properly. Anything that doesn't apply to the current scale is skipped when the style sheet is compiled, which happens when you change scale.
<scale min='750000' max='3000000'> <layer name='boundary/minor'> <condition exp='(Type bitand #FFFF)=4'> <condition exp='@=1'> <!-- lines --> <line fill='purple+0.75white' width='0.6pt' dashArray='2 1 1 1'/> </condition> <condition exp='@=2'> <!-- polygons --> <label color='purple+white' font-size='6pt' position='horizontal' priority='-2' wrapWidth='20em' case='assume-title'/> </condition> </condition> </layer> </scale>