2011-09-17 3 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 node stripped ou t тоже, поскольку он также отсутствует в вашем выходном XML. Благодаря! –

+0

Ops ... Он не должен удаляться (я думаю). Проблема в том, что преобразованный 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> 
Смежные вопросы