2011-09-17 130 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

這並不難實現,但是你能確認你想要mml:math節點被剝離嗎?也不會,因爲它在輸出XML中也不存在。謝謝! –

+0

行動......它不會被剝離(我認爲)。問題在於轉換後的XML被內聯到C#源代碼中,由Doxygen處理:我還沒有試驗必要的標記來正確顯示方程。我想mml:數學標籤也應該包括在內 – Luca

回答

1

只需使用:

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

,或者,如果你已經正確聲明的命名空間:

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

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