В принципе это просто: ему просто нужен стандартный шаблон "модифицированного шаблона личности":
<xsl:template match="*">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="ppx">
<ppx xmlns="http://www.p.com/ppx/1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ppxx="http://www.m.com/mExt/v1"
xmlns:ppxtpx="http://www.m.com/mExt/v3"
xsi:schemaLocation="http://www.p.com/ppx/1 http://www.p.com/ppx/1/ppx.xsd
http://www.m.com/mExt/v1 http://www.m.com/mExt/v1/ppxv1.xsd
http://www.m.com/mExt/v3 http://www.m.com/mExt/v3/ppxv3.xsd">
<xsl:apply-templates/>
</ppx>
</xsl:template>
Однако, это может быть немного сложнее, в зависимости от того, насколько сильно могут отличаться входные данные от примера, который вы нам показали. Например, если корневой элемент не всегда будет иметь имя ppx
, или если пространства имен, которые будут добавлены, заранее неизвестны. Поэтому, возможно, вам придется объяснить более подробную информацию о проблеме