RE: [xsl] Commenting selected elements (parents) and keeping the child elements with attributes/restoring parents elements somewhere else

Subject: RE: [xsl] Commenting selected elements (parents) and keeping the child elements with attributes/restoring parents elements somewhere else
From: "Pankaj Chaturvedi" <pankaj.chaturvedi@xxxxxxxxx>
Date: Fri, 9 May 2008 13:52:03 +0530
generate the comment delimiters <!--
and --> as text using disable-output-escaping or character maps; you can
then generate the elements as real elements.


Thanks Michael for suggestions. I will look into this. I need to restore
these elements as comments (I thought that will be best way) as I need to
re-transform back to the original.

Best,

Pankaj



-----Original Message-----
From: Michael Kay [mailto:mike@xxxxxxxxxxxx]
Sent: Friday, May 09, 2008 1:40 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: RE: [xsl] Commenting selected elements (parents) and keeping
the child elements with attributes/restoring parents elements somewhere
else



You're constructing a result tree, and in the tree model of XML, comments
can't contain elements, they can only contain text. So your only option is
to contruct a comment that contains text that looks (to an untrained
observer) like an element. That is, you need to serialize the elements by
hand - which you could perhaps do using saxon:serialize().

Another option, which only works if you know that the output of your
stylesheet is being serialized, is to generate the comment delimiters <!--
and --> as text using disable-output-escaping or character maps; you can
then generate the elements as real elements.

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

> -----Original Message-----
> From: Pankaj Chaturvedi [mailto:pankaj.chaturvedi@xxxxxxxxx]
> Sent: 09 May 2008 09:01
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] Commenting selected elements (parents) and
> keeping the child elements with attributes/restoring parents
> elements somewhere else
>
>
> Hello all,
>
> Is there is a way to commenting some specific elements mostly
> parents while retaining the child elements in output. I know
> I am sounding bit stupid as far as the hierarchy of xml is
> concerns, but I need to restore the parents/grand parents
> (instead omitting them) along with their attribute values.
>
>
> As of now I am trying the following, but its omit them.
>
>
>
> 	<xsl:template match="root">
> <xsl:copy>
> <xsl:attribute name="dummy">the_root</xsl:attribute>
> 			<xsl:apply-templates/>
> 			<xsl:apply-templates select=".//aaa"/>
> 	</xsl:copy>
> 	</xsl:template>
>
>
> 	<xsl:template match="root//aaa">
>       <xsl:copy>
> 		<xsl:attribute name="dummy">xxx</xsl:attribute>
> 			<xsl:copy-of select="@*"/>
> 			<xsl:apply-templates/>
> 	</xsl:copy>
> 	</xsl:template>
>
>
>   <!-- omit these -->
>
>  <xsl:template match="abc | bbb"/>
>
>
>
>
> Input
> ====
> <root>
> 	<abc id="123">
> 		<bbb>
> 			<aaa id="123">xxxxxx</aaa>
> 		</bbb>
> 		<abc>
> </root>
>
>
> Output
> ======
>
> <root>
> <!--<abc id="123"><bbb>-->
> 			<aaa id="123">xxxxxx</aaa>
> <!--</bbb>
> 		<abc>-->
>
> </root>
>
> or may be something like
> ===================
>
> <root>
> 			<aaa id="123">xxxxxx</aaa>
>
> 	<!--<abc id="123">
> <bbb>--><!--</bbb>
> <abc>-->
>
> </root>
>
>
> I've also tried to use the following but takes only text
> nodes of the <abc> and <bbb> and "not their markup".
>
> 	<xsl:template match="root">
> <xsl:copy>
> <xsl:attribute name="dummy">the_root</xsl:attribute>
>
> 			<xsl:apply-templates/>
> 			<xsl:apply-templates select=".//aaa"/>
> 			<xsl:comment>
> 			<xsl:apply-templates select="./abc | .//bbb"/>
> 			</xsl:comment>
> </xsl:copy>
> 	</xsl:template>
>
>
>
> Hope I've made myself clear and any ideas in this regard will
> be highly appreciated.
>
>
> Best,
>
> Pankaj Chaturvedi
>
> ==============================================================
> ==============
> ================
>
>
> Confidentiality Notice:" This message and any attachment(s)
> contained here are information that is confidential,
> proprietary to IDS Infotech Ltd. and its customers.
> Contents may be privileged or otherwise protected by law. The
> information is solely intended for the individual or the
> entity it is addressed to. If you are not the intended
> recipient of this message, you are not authorized to read,
> forward, print, retain, copy or disseminate this message or
> any part of it. If you have received this e-mail in error,
> please notify the sender immediately by return e-mail and
> delete it from your computer."

Current Thread