私はあなたが探しているものを知っていると思います。支援の精神で、以下に解決策といくつかの説明を示します。XSLT に関する優れた本を手に取り、基本を一から学ぶことを強くお勧めします。
この XSLT の場合:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<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="ContentItem">
<xsl:apply-templates select="DataContent/*"/>
</xsl:template>
</xsl:stylesheet>
...元の XML に適用されます (整形式になるように修正されます):
<ContentItem>
<DataContent>
<media media-type="image" style="leftSide">
<media-reference data-location="#photo0" mime-type=""/>
</media>
<p>p1</p>
<p>p2</p>
<p>p3</p>
</DataContent>
</ContentItem>
...必要な結果は(私が思うに)生成されます:
<media media-type="image" style="leftSide">
<media-reference data-location="#photo0" mime-type=""/>
</media>
<p>p1</p>
<p>p2</p>
<p>p3</p>
<xsl:value-of>
定義により、選択したノード/属性の文字列値を返すため、ソリューションはテキストを出力しています。