Sure, this is what the standard <xsl:apply-templates/> mechanism is designed to achieve:
<xsl:template match="par">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="embedded">
.. process the "embedded" element ..
</xsl:template>
<xsl:template match="text()">
.. process a single text node ..
</xsl:template>
Usually you can use the default (built-in) template for text nodes, which just copies the text to the result tree; but you could do your own processing here if you prefer. You can also make the match condition more selective, e.g. match="par/text()" if you want a special rule to handle text nodes appearing directly within a par element.
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference