Xpath - это только язык запросов для документов XML - он не может самостоятельно изменять документ XML или создавать новый документ XML .
Язык, специально разработанный для преобразования XML-документа, называется XSLT.
Вот очень короткое и простое XSLT-преобразование, которое решает вашу проблему :
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="add[@name='bleh']">
<xsl:copy>
<xsl:copy-of select="@*"/>
<option name="foo" value="bar"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
когда это преобразование применяется к предоставленному документу XML :
<configuration>
<plugins>
<add name="bleh"/>
</plugins>
</configuration>
желаемый, правильный результат получается :
<configuration>
<plugins>
<add name="bleh">
<option name="foo" value="bar"/>
</add>
</plugins>
</configuration>