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ädte zu einer
Größ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>
--~--