--- schematron.c	2016-11-08 13:28:52.942889932 -0500
+++ schematron_new.c	2016-11-08 13:28:39.962524646 -0500
@@ -1293,7 +1293,10 @@
 xmlSchematronFormatReport(xmlSchematronValidCtxtPtr ctxt,
 			  xmlNodePtr test, xmlNodePtr cur) {
     xmlChar *ret = NULL;
+    xmlChar *select = NULL;
     xmlNodePtr child, node;
+    xmlXPathObjectPtr xpathret;
+    xmlXPathObjectPtr xpathstr;
 
     if ((test == NULL) || (cur == NULL))
         return(ret);
@@ -1323,6 +1326,19 @@
 	        ret = xmlStrcat(ret, BAD_CAST ":");
 	        ret = xmlStrcat(ret, node->name);
 	    }
+	} else if (IS_SCHEMATRON(child, "value-of")) {
+	    select = xmlGetNoNsProp(child, BAD_CAST "select");
+	    if (select != NULL) {
+	        xpathret = xmlXPathEval(select, ctxt->xctxt);
+	        if (xpathret != NULL) {
+	            xpathstr = xmlXPathConvertString(xpathret);		/* Convert to XPATH_STRING, frees xpathret */
+	            if (xpathstr != NULL) {
+	                ret = xmlStrcat(ret, xpathstr->stringval);
+	                xmlXPathFreeObject(xpathstr);
+	            }
+	        }
+	        xmlFree(select);
+	    }
 	} else {
 	    child = child->next;
 	    continue;
