RE: [xsl] Special characters and Transformation

Subject: RE: [xsl] Special characters and Transformation
From: "Khorasani, Houman" <Houman.Khorasani@xxxxxxxxxxxx>
Date: Fri, 5 May 2006 16:02:29 +0100
Florent,

Many thanks for the examples.  They didn't work by themselves but gave me a
pretty nice idea:

That's what I created:
<?xml version="1.0" encoding="us-ascii"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
xmlns:f="http://www.fo.com"; exclude-result-prefixes="f">
	<xsl:output method="xml" version="1.0" encoding="us-ascii" indent="yes"/>

	<xsl:template match="/">
		<xsl:apply-templates select="*"/>
	</xsl:template>

	<xsl:template match="f:root">
		<xsl:element name="root" namespace="http://www.fo.com";>
			<xsl:apply-templates/>
		</xsl:element>
	</xsl:template>

	<xsl:template match="f:TEXT">
		<xsl:element name="TEXT">
			<xsl:element name="Tag">
				<xsl:value-of select="f:Tag"/>
			</xsl:element>
		</xsl:element>
	</xsl:template>
</xsl:stylesheet>


It is very close to where I want to be:

<?xml version="1.0" encoding="us-ascii"?>
<root xmlns="http://www.fo.com";>
	<TEXT xmlns="">
		<Tag>Als die ersten St&#228;dte zu einer Gr&#246;&#223;e heranwuchsen</Tag>
	</TEXT>
</root>


However how do I get rid of <TEXT xmlns="">? It should be plain <TEXT> in the
output?

Many thanks for any advice,
Houman




-----Original Message-----
From: Florent Georges [mailto:darkman_spam@xxxxxxxx]
Sent: 05 May 2006 12:00
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: RE: [xsl] Special characters and Transformation

Florent Georges wrote:

>   BTW, I suggest you to take a look at "Literal Result Elements",
> "Template Rules", and maybe the "Modified Identity Tranformation
> Pattern".

  It is not really explicit.  Starting from your code:

    <xsl:stylesheet
        version="1.0"
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
      <xsl:output method="xml" version="1.0"
                  encoding="us-ascii" indent="yes"/>
      <xsl:template match="/">
        <xsl:element name="root" namespace="http://www.fo.com";>
          <xsl:for-each select="Text">
            <xsl:element name="Text">
              <xsl:element name="tag">
                <xsl:value-of select="tag"/>
              </xsl:element>
            </xsl:element>
          </xsl:for-each>
        </xsl:element>
      </xsl:template>
    </xsl:stylesheet>

"Literal Result Elements" let you write:

    <xsl:stylesheet
        version="1.0"
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
      <xsl:output method="xml" version="1.0"
                  encoding="us-ascii" indent="yes"/>
      <xsl:template match="/">
        <f:root xmlns:f="http://www.fo.com";>
          <xsl:for-each select="root/Text">
            <Text>
              <tag>
                <xsl:value-of select="tag"/>
              </tag>
            </Text>
          </xsl:for-each>
        </f:root>
      </xsl:template>
    </xsl:stylesheet>

"Template Rules" let you write:

    <xsl:stylesheet
        version="1.0"
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
      <xsl:output method="xml" version="1.0"
                  encoding="us-ascii" indent="yes"/>
      <xsl:template match="/">
        <xsl:apply-templates/>
      </xsl:template>
      <xsl:template match="root">
        <f:root xmlns:f="http://www.fo.com";>
          <xsl:apply-templates/>
        </f:root>
      </xsl:template>
      <xsl:template match="Text">
        <Text>
          <xsl:apply-templates select="tag"/>
        </Text>
      </xsl:template>
      <xsl:template match="tag">
        <tag>
          <xsl:value-of select="tag"/>
        </tag>
      </xsl:template>
    </xsl:stylesheet>

and "Modified Identity Tranformation Pattern" let you write:

    <xsl:stylesheet
        version="1.0"
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
      <xsl:output method="xml" version="1.0"
                  encoding="us-ascii" indent="yes"/>
      <xsl:template match="@*|node()">
        <xsl:copy>
          <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
      </xsl:template>
      <xsl:template match="root">
        <f:root xmlns:f="http://www.fo.com";>
          <xsl:apply-templates/>
        </f:root>
      </xsl:template>
      <xsl:template match="Text">
        <xsl:copy>
          <xsl:apply-templates select="tag"/>
        </xsl:copy>
      </xsl:template>
    </xsl:stylesheet>

or (depending on your real usage):

    <xsl:stylesheet
        version="1.0"
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
      <xsl:output method="xml" version="1.0"
                  encoding="us-ascii" indent="yes"/>
      <xsl:template match="@*|node()">
        <xsl:copy>
          <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
      </xsl:template>
      <xsl:template match="root">
        <f:root xmlns:f="http://www.fo.com";>
          <xsl:apply-templates/>
        </f:root>
      </xsl:template>
      <xsl:template match="junk|junk2"/>
    </xsl:stylesheet>

  Regards,

--drkm



































___________________________________________________________________________
Faites de Yahoo! votre page d'accueil sur le web pour retrouver directement
vos services prifiris : virifiez vos nouveaux mails, lancez vos recherches et
suivez l'actualiti en temps riel.
Rendez-vous sur http://fr.yahoo.com/set

Current Thread