Index: wp-includes/post-template.php
===================================================================
--- wp-includes/post-template.php	(revision 17290)
+++ 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, $taxonomy ) . '-' . sanitize_html_class( $term->slug, $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);
