2011-09-17 9 views
1

私は、次のXMLスニペットを処理しようとしている:XSLのコピーのコピーの外側ノード

 <inlineequation><mml:math> 
      <!-- eqn: [-1,1]:--> 
      <mml:mfenced open="[" close="]"> 
       <mml:mn>-1</mml:mn> 
       <mml:mn>1</mml:mn> 
      </mml:mfenced> 
     </mml:math></inlineequation> 

私が得た最良の結果はコピーの機能を使用することによって、全体のマークアップをコピーすることです。私はそれを取り除くしたいながら

<xsl:template match="para/inlineequation"> 
    <xsl:copy-of select="."/> 
</xsl:template> 

ただし、変換されたXMLは、またinlineequationノードを持つことになります。確かに正しい出力は:

 <mml:math><mml:mfenced open="[" close="]"> 
      <mml:mn>-1</mml:mn> 
      <mml:mn>1</mml:mn> 
     </mml:mfenced></mml:math> 

上記の結果を得るには?私は今取得していた結果は次のとおりです。

 <inlineequation><mml:math> 
     <mml:mfenced open="[" close="]"> 
      <mml:mn>-1</mml:mn> 
      <mml:mn>1</mml:mn> 
     </mml:mfenced> 
     </mml:math></inlineequation> 
+0

:あなたは正しく名前空間を宣言している場合は、

<xsl:template match="para/inlineequation"> <xsl:copy-of select="*"/> </xsl:template> 

をかこれは達成するのは難しいことではありませんが、あなたはmml:mathノードがouあなたの出力XMLには存在しないので、tも同様です。ありがとう! –

+0

Ops ...それは取り除かれない(私は思う)。問題は、変換されたXMLがDoxygenによって処理されたC#のソースコードにインライン展開されていることです。まだ式を正しく表示するために必要なマークアップを実験していません。私はmml:数学のタグも含まれていると思います – Luca

答えて

1

だけ使用します。

<xsl:template match="para/inlineequation"> 
    <xsl:copy-of select="mml:math"/> 
</xsl:template> 

または

<xsl:template match="mml:math"> 
    <xsl:copy-of select="."/> 
</xsl:template> 
関連する問題