Index: wp-includes/post-template.php
===================================================================
--- wp-includes/post-template.php	(revision 21841)
+++ wp-includes/post-template.php	(working copy)
@@ -347,24 +347,23 @@
 	// hentry for hAtom compliance
 	$classes[] = 'hentry';
 
-	// Categories
-	if ( is_object_in_taxonomy( $post->post_type, 'category' ) ) {
-		foreach ( (array) get_the_category($post->ID) as $cat ) {
-			if ( empty($cat->slug ) )
-				continue;
-			$classes[] = 'category-' . sanitize_html_class($cat->slug, $cat->term_id);
+	// All public taxonomies 
+	$taxonomies = get_taxonomies( array( 'public' => true ), 'names', 'and' );  
+	if ( is_array( $taxonomies ) ) { 
+		foreach ( $taxonomies as $taxonomy ) { 
+			if ( is_object_in_taxonomy( $post->post_type, $taxonomy ) ) { 
+				foreach ( (array) get_the_terms( $post->ID, $taxonomy ) as $term ) { 
+					if ( empty( $term->slug ) ) 
+						continue; 
+					if ( 'post_tag' == $taxonomy ) 
+						$classes[] = 'tag-' . sanitize_html_class( $term->slug, $term->term_id ); 
+					else 
+						$classes[] = sanitize_html_class( $taxonomy->name . '-' . $term->slug, $taxonomy->name . '-' . $term->term_id ); 
+				}
+			}
 		}
 	}
 
-	// Tags
-	if ( is_object_in_taxonomy( $post->post_type, 'post_tag' ) ) {
-		foreach ( (array) get_the_tags($post->ID) as $tag ) {
-			if ( empty($tag->slug ) )
-				continue;
-			$classes[] = 'tag-' . sanitize_html_class($tag->slug, $tag->term_id);
-		}
-	}
-
 	if ( !empty($class) ) {
 		if ( !is_array( $class ) )
 			$class = preg_split('#\s+#', $class);
