Re: [xsl] create escaped(?) html of some nodes

Subject: Re: [xsl] create escaped(?) html of some nodes
From: Abel Braaksma <abel.online@xxxxxxxxx>
Date: Mon, 09 Oct 2006 11:37:57 +0200
Hi Jan,

Perhaps this is a way of doing so (not tested though):

<xsl:template match="Para">
   <xsl:text>&lt;p&gt;</xsl:text>
   <xsl:value-of select="." />
   <xsl:text>&lt;/p&gt;</xsl:text>
</xsl:template>

If you do not want ALL Para elements to be interpreted like this, please specify what you mean with "while leaving the others untouched".

Another way of doing the above is using CDATA. It may be better readable, depending on your preference:
<xsl:template match="Para">
<xsl:text><![CDATA[ <p> ]]></xsl:text>
<xsl:value-of select="." />
<xsl:text><![CDATA[ </p> ]]></xsl:text>
</xsl:template>


Please note: it is not guaranteed that the '>' character will be output as '&gt;' in either scenario, as the serializer may decide to output it as a literal '>'. This is, because only the &lt; and the &amp; characters are the only characters _required_ to be output as entities when their literal equivalent is needed, in order to make valid XML. The following are equivalent if you output as XML (hope the mailer leaves it intact):

<example>&lt;p>some text&lt;/p></example>
<example>&lt;p&gt;some text&lt;/p&gt;</example>
<example>&#x3C;p&#x3E;some text&#x3C;/p&#x3E;</example>

As far as I know, you cannot (easily) control how exactly these are output by your processor.

Cheers,
Abel Braaksma
http://www.nuntia.com


Jan Limpens wrote:
Hi,

I need help creating an encoded html string from some nodes of a
document, while leaving the others untouched
I have got a xml file as such:

<?xml version="1.0" encoding="utf-8"?>
<Entry pubdate="2006-10-08T20:25:36.65625-03:00" id="test"
xmlns="http://com/entry";>
 <navi:show-in-list>true</navi:show-in-list>
 <navi:order>99</navi:order>
 <Thumbnail src="xxx.gif" />
 <Version xml:lang="en">
   <Title>enTitle</Title>
   <NavigationTitle>enNavTitle</NavigationTitle>
   <Body>
     <Para>Hello Dolly!</Para>
   </Body>
 </Version>
 <Version xml:lang="de">
   <Title>2deTitle</Title>
   <NavigationTitle>2deNavTitle</NavigationTitle>
   <Body>
     <Para>Hallo Doris!</Para>
   </Body>
 </Version>
 <Slideshow>
   <Image src="sss.gif">
     <ImageInfo xml:lang="en">
       <Title>Title</Title>
       <Description>Description</Description>
     </ImageInfo>
   </Image>
   <Image src="2222.gif">
     <ImageInfo xml:lang="en">
       <Title>Title</Title>
     </ImageInfo>
   </Image>
 </Slideshow>
</Entry>

and transform it to

<?xml version="1.0" encoding="utf-8"?>
<Entry xmlns:navi="http//limpens.com/navigation"
pubdate="2006-10-08T20:25:36.65625-03:00" id="test"
xmlns="http://limpens.com/entry";>
 <navi:show-in-list>true</navi:show-in-list>
 <navi:order>99</navi:order>
 <Thumbnail src="xxx.gif" />
 <Version xml:lang="en">
   <Title>enTitle</Title>
   <NavigationTitle>enNavTitle</NavigationTitle>
   <Body>&lt;p&gt;Hello Dolly!&lt;/p&gt;</Body>
 </Version>
 <Version xml:lang="de">
   <Title>2deTitle</Title>
   <NavigationTitle>2deNavTitle</NavigationTitle>
   <Body>&lt;p&gt;Hallo Doris!&lt;/p&gt;</Body>
 </Version>
 <Slideshow>
   <Image src="sss.gif">
     <ImageInfo xml:lang="en">
       <Title>Title</Title>
       <Description>Description</Description>
     </ImageInfo>
   </Image>
   <Image src="2222.gif">
     <ImageInfo xml:lang="en">
       <Title>Title</Title>
     </ImageInfo>
   </Image>
 </Slideshow>
</Entry>

How can I do this? I am using the .net 2.0 xslt implementation. Big
thanks in advance,

Current Thread