xsl-list
[Top] [All Lists]

RE: [xsl] Special characters and Transformation

2006-05-05 08:16:08
If you want the TEXT element to be in the http://www.fo.com namespace then
you should say so:

<xsl:element name="TEXT" namespace="http://www.fo.com";>

The xmlns="" has been added because you asked for the TEXT element to be in
the null namespace.

This code would be a lot more readable if you used literal result elements.

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

-----Original Message-----
From: Khorasani, Houman 
[mailto:Houman(_dot_)Khorasani(_at_)comverse(_dot_)com] 
Sent: 05 May 2006 16:02
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: RE: [xsl] Special characters and Transformation

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(_at_)yahoo(_dot_)fr]
Sent: 05 May 2006 12:00
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
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 préférés : vérifiez vos 
nouveaux mails, lancez vos recherches et suivez l'actualité 
en temps réel. 
Rendez-vous sur http://fr.yahoo.com/set

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--