il metodo più veloce (e forse quello più corretto tenendo conto del supporto attuale dei CSS da parte dei browsers) è secono me:

codice:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it">
<head>
<title>Titolo</title>
<meta http-equiv="Content-Type" content="text/html; charset= iso-8859-1" />
<meta http-equiv="Content-Language" content="it" />
<style type="text/css" media="screen">
ol#lista{list-style: none;}
</style>
</head>
<body>
  1. 1.1 Voce 1
  2. 1.2 Voce 2
  3. 1.3 Voce 3
  4. 1.4 Voce 4
</body> </html>
se lo pseudoelemento :before fosse supportata potresti fare diversamente...
codice:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it">
<head>
<title>Titolo</title>
<meta http-equiv="Content-Type" content="text/html; charset= iso-8859-1" />
<meta http-equiv="Content-Language" content="it" />
<style type="text/css" media="screen">
ol#lista:before { content: "1." }
ol#lista{list-style: decimal;}
</style>
</head>
<body>
  1. Voce 1
  2. Voce 2
  3. Voce 3
  4. Voce 4
</body> </html>
vedi http://www.w3.org/TR/2005/WD-CSS21-2.../generate.html