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

Subject: Re: [xsl] spirit an xml element away and bring it back
From: Frank Marent <frank.marent@xxxxxxxxxxx>
Date: Tue, 22 Aug 2006 14:36:54 +0200
michael

it works. it's great. and it helps us very much. thank you a lot.

frank


Am 22.08.2006 um 09:33 schrieb Michael Kay:


There's nothing in standard XSLT, but you could use saxon:serialize () (and
of course saxon:parse() on the receiving end).


Michael Kay
http://www.saxonica.com/

-----Original Message-----
From: Frank Marent [mailto:frank.marent@xxxxxxxxxxx]
Sent: 22 August 2006 06:35
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: [xsl] spirit an xml element away and bring it back

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:m
ath&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