Index: src/test/java/org/apache/jackrabbit/spi/commons/query/xpath/QueryFormatTest.java
===================================================================
--- src/test/java/org/apache/jackrabbit/spi/commons/query/xpath/QueryFormatTest.java	(Revision 1392534)
+++ src/test/java/org/apache/jackrabbit/spi/commons/query/xpath/QueryFormatTest.java	(Arbeitskopie)
@@ -67,6 +67,14 @@
         checkStatement("//element(*, foo)[foo/*/@bar = 'bla']");
     }
 
+    public void testStarNameAtBeginningOfPredicate() throws Exception {
+        checkStatement("//element(*, foo)[*/*/@bar = 'bla']");
+    }
+
+    public void testChildStarName() throws Exception {
+        checkStatement("//programs//*[*/@sunday]");
+    }
+
     public void testRepSimilar() throws Exception {
         checkStatement("//element(*, foo)[rep:similar(foo, '/some/path')]");
     }
Index: src/main/java/org/apache/jackrabbit/spi/commons/query/xpath/QueryFormat.java
===================================================================
--- src/main/java/org/apache/jackrabbit/spi/commons/query/xpath/QueryFormat.java	(Revision 1392534)
+++ src/main/java/org/apache/jackrabbit/spi/commons/query/xpath/QueryFormat.java	(Arbeitskopie)
@@ -348,7 +348,7 @@
             PathQueryNode relPath = node.getRelativePath();
             if (relPath == null) {
                 propPath.append(".");
-            } else if (relPath.getNumOperands() > 0 && relPath.getPathSteps()[0].getNameTest().equals(XPathQueryBuilder.FN_POSITION_FULL)) {
+            } else if (relPath.getNumOperands() > 0 && XPathQueryBuilder.FN_POSITION_FULL.equals(relPath.getPathSteps()[0].getNameTest())) {
                 propPath.append(resolver.getJCRName(XPathQueryBuilder.FN_POSITION_FULL));
             } else {
                 LocationStepQueryNode[] steps = relPath.getPathSteps();
Index: src/main/java/org/apache/jackrabbit/spi/commons/query/xpath/XPathQueryBuilder.java
===================================================================
--- src/main/java/org/apache/jackrabbit/spi/commons/query/xpath/XPathQueryBuilder.java	(Revision 1392534)
+++ src/main/java/org/apache/jackrabbit/spi/commons/query/xpath/XPathQueryBuilder.java	(Arbeitskopie)
@@ -425,8 +425,13 @@
                         }
                         PathQueryNode relPath = tmp.getRelativePath();
                         LocationStepQueryNode[] steps = relPath.getPathSteps();
-                        
-                        tmpRelPath.addLast(steps[steps.length-1].getNameTest());
+
+                        Name nameTest = steps[steps.length-1].getNameTest();
+                        if (nameTest==null) {
+                        	// see LocationStepQueryNode javadoc on when getNameTest()==null: when it was a star (asterisk)
+                        	nameTest = RelationQueryNode.STAR_NAME_TEST;
+                        }
+						tmpRelPath.addLast(nameTest);
                     }
                 }
                 break;
@@ -956,7 +961,7 @@
                     }
                     if (queryNode.getType() == QueryNode.TYPE_PATH) {
                         PathQueryNode pathNode = (PathQueryNode) queryNode;
-                        
+
                         pathNode.addPathStep(createDerefQueryNode(node, descendant, pathNode));
                     } else if (queryNode.getType() == QueryNode.TYPE_RELATION) {
                         RelationQueryNode relNode = (RelationQueryNode) queryNode;
