A hidden assumption for the above, for instance, is that as long as there is at least one tag1 of that text content, the value tag will be a valid choice. If you want to have more precision on the position of such tag1 of that text content, add a condition (on position) for that purpose.

One possible among others (with more or less assumptions on the context and precise hidden conditions) is the following - I put it in a xslt select as illustration:
<pre class="jive-pre">
<xsl:value-of select=
"descendant-or-self::*[local-name()='value'] [preceding-sibling::*[local-name()=
'tag1'][normalize-space()=
'product_Add']]
" />
</pre>
A hidden assumption for the above, for instance, is that as long as there is at least one tag1 of that text content, the value tag will be a valid choice. If you want to have more precision on the position of such tag1 of that text content, add a condition (on position) for that purpose.