You could just do xsl:for-each select="data/*".
But a better way, assuming that the element names node1, node2, and node3 imply some difference of structure or meaning (else why would they have different names?) is to use xsl:apply-templates, and then define a template rule to process each kind of child element.
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference