[xsl] spirit an xml element away and bring it back

Subject: [xsl] spirit an xml element away and bring it back
From: Frank Marent <frank.marent@xxxxxxxxxxx>
Date: Tue, 22 Aug 2006 07:35:00 +0200
hello.

we are trying (for a rountripping of xml documents between arbortext editor and adobe framemaker) to spirit mathml code away from xml arbortext editor documents (to open in adobe framemaker) and let the mathml code reappear again when returning to xml arbortext editor.

the best would be to hide the mathml code in an attribute and let it also reappear again from that, but we could only make *one* way (hiding the code) and only in a *processing instruction* by this xslt fragment:

  ...
  <xsl:template match="FormulaEntity">
    <FormulaEntity>
      <xsl:text disable-output-escaping="yes">&lt;?MATH </xsl:text>
      <xsl:apply-templates/>
      <xsl:text disable-output-escaping="yes"> ?&gt;</xsl:text>
    </FormulaEntity>
  </xsl:template>
  ...

i wonder if there is any way to to spirit an xml element with all descendants away, hiding it in an attribute and bring it back to stage after that. our xml input code would be like:

<FormulaEntity>
  <m:math>
    <m:mrow>
      <m:mroot>
        <m:mrow>
          <m:mn>5</m:mn>
        </m:mrow>
        <m:mrow>
          <m:mn>2</m:mn>
        </m:mrow>
      </m:mroot>
    </m:mrow>
  </m:math>
</FormulaEntity>

we have to store the <m:math> element and the best would be to have after that something like:

<FormulaEntity MathML="&lt;m:math&gt;&lt;m:mrow&gt;&lt;m:mroot&gt;&lt;m:mrow&gt;&lt;m:m n&gt;5&lt;/m:mn&gt;&lt;/m:mrow&gt;&lt;m:mrow&gt;&lt;m:mn&gt;2&lt;/ m:mn&gt;&lt;/m:mrow&gt;&lt;/m:mroot&gt;&lt;/m:mrow&gt;&lt;/m:math&gt;">

and bringing the code back to the input code.

is there any solution in xslt for that? for tips many thanks in advance.

frank

Current Thread