Discussion:
Probleme de HTML de XML et de XSLT
(trop ancien pour répondre)
Manu
2005-01-23 20:12:01 UTC
Permalink
Bonjour,

Peut on conserver le code HTML contenu dans un XML qui est transformé via un
XSLT en un autre HTML ?

Par exemple, j'utilise un XmlTextWriter pour faire un XML simple contenant
peu d'information. Ensuite je le passe dans un XSLT pour en faire HTML.

Dim xmlTW As New System.Xml.XmlTextWriter(strFileXmlTmp,
System.Text.UnicodeEncoding.UTF8)
With xmlTW
.Formatting = Xml.Formatting.Indented
.Indentation = 3
.WriteStartDocument()
.WriteStartElement("root")
.WriteStartElement("voiture")
.WriteString("Ma <b>belle</b> voiture rouge.")
.WriteEndElement()
.WriteEndElement()
.WriteEndDocument()
.Flush()
.Close()
End With

Dim strFileHtmTmp As String = "c:\essai.htm")
Dim xslTran As New System.Xml.Xsl.XslTransform

xslTran.Load("C:\Transform.xslt")
xslTran.Transform(strFileXmlTmp, strFileHtmTmp, Nothing)

Source du C:\Transform.xslt

<?xml version="1.0" encoding="Windows-1252" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="1.0" encoding="iso-8859-15"
media-type="text/html" indent="yes" />
<xsl:template match="root">
<xsl:value-of select="voiture" />
</xsl:template>
</xsl:stylesheet>

Mais ça sort le code html de "Ma belle voiture" :(
Comment avoir Belle en gras ?

Manu
"Boss Hog" <bosshog@tiscali.fr>
2005-01-24 09:48:23 UTC
Permalink
Salut,
un truc du genre....

<?xml version="1.0" encoding="Windows-1252" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="1.0" encoding="iso-8859-15"
media-type="text/html" indent="yes" />
<xsl:template match="root">
<p class="CSS_bold_text">
<xsl:value-of select="voiture" />
</p>
</xsl:template>
</xsl:stylesheet>

Ou----

<?xml version="1.0" encoding="Windows-1252" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="1.0" encoding="iso-8859-15"
media-type="text/html" indent="yes" />
<xsl:template match="root">
<b>
<xsl:value-of select="voiture" />
</b>
</xsl:template>
</xsl:stylesheet>

Ouala
@+ Boss Hog
Post by Manu
Bonjour,
Peut on conserver le code HTML contenu dans un XML qui est transformé via un
XSLT en un autre HTML ?
Par exemple, j'utilise un XmlTextWriter pour faire un XML simple contenant
peu d'information. Ensuite je le passe dans un XSLT pour en faire HTML.
Dim xmlTW As New System.Xml.XmlTextWriter(strFileXmlTmp,
System.Text.UnicodeEncoding.UTF8)
With xmlTW
.Formatting = Xml.Formatting.Indented
.Indentation = 3
.WriteStartDocument()
.WriteStartElement("root")
.WriteStartElement("voiture")
.WriteString("Ma <b>belle</b> voiture rouge.")
.WriteEndElement()
.WriteEndElement()
.WriteEndDocument()
.Flush()
.Close()
End With
Dim strFileHtmTmp As String = "c:\essai.htm")
Dim xslTran As New System.Xml.Xsl.XslTransform
xslTran.Load("C:\Transform.xslt")
xslTran.Transform(strFileXmlTmp, strFileHtmTmp, Nothing)
Source du C:\Transform.xslt
<?xml version="1.0" encoding="Windows-1252" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="1.0" encoding="iso-8859-15"
media-type="text/html" indent="yes" />
<xsl:template match="root">
<xsl:value-of select="voiture" />
</xsl:template>
</xsl:stylesheet>
Mais ça sort le code html de "Ma belle voiture" :(
Comment avoir Belle en gras ?
Manu
"Boss Hog" <bosshog@tiscali.fr>
2005-01-24 09:57:29 UTC
Permalink
Re-salut,
j'ai répondu un peut vite, désolé...

en fait tu doit utiliser substringAfter et substringBefore

Exemple, je part du principe que je connais le mot à faire ressortir:

<xsl:variable name="textToBold">
<xsl:value-of select="' Belle '"/>
</xsl:variable>

<xsl:variable name="part1">
<xsl:value-of
select="string(concat(substring-before(voiture,$textToBold)"/>
</xsl:variable>
<xsl:variable name="part2">
<xsl:value-of select="string(concat(substring-after(voiture,$textToBold)"/>
</xsl:variable>

<!--resultat-->
<xsl:value-of select="$part1"/>
<b><xsl:value-of select="$textToBold"/></b>
<xsl:value-of select="$part2"/>

Ouala, c'est juste un exemple...

@+ Boss Hog
Post by Manu
Bonjour,
Peut on conserver le code HTML contenu dans un XML qui est transformé via un
XSLT en un autre HTML ?
Par exemple, j'utilise un XmlTextWriter pour faire un XML simple contenant
peu d'information. Ensuite je le passe dans un XSLT pour en faire HTML.
Dim xmlTW As New System.Xml.XmlTextWriter(strFileXmlTmp,
System.Text.UnicodeEncoding.UTF8)
With xmlTW
.Formatting = Xml.Formatting.Indented
.Indentation = 3
.WriteStartDocument()
.WriteStartElement("root")
.WriteStartElement("voiture")
.WriteString("Ma <b>belle</b> voiture rouge.")
.WriteEndElement()
.WriteEndElement()
.WriteEndDocument()
.Flush()
.Close()
End With
Dim strFileHtmTmp As String = "c:\essai.htm")
Dim xslTran As New System.Xml.Xsl.XslTransform
xslTran.Load("C:\Transform.xslt")
xslTran.Transform(strFileXmlTmp, strFileHtmTmp, Nothing)
Source du C:\Transform.xslt
<?xml version="1.0" encoding="Windows-1252" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="1.0" encoding="iso-8859-15"
media-type="text/html" indent="yes" />
<xsl:template match="root">
<xsl:value-of select="voiture" />
</xsl:template>
</xsl:stylesheet>
Mais ça sort le code html de "Ma belle voiture" :(
Comment avoir Belle en gras ?
Manu
Manu
2005-01-24 10:28:07 UTC
Permalink
Oula ça me parait bien compliqué :((

D'autant que je connais pas spécialement les codes html qui sont dans mon
noeud <voiture>.
Par exemple, je peut y trouver " Ma <b>belle</b> voiture <font
color='red'>rouge</font>. "
Donc effectivement dans mon Writer j'utiliserai .WriteRaw plutot que
.WriteString mais c'est surtout par le xslt qu'il faudrai que j'arrive a
envoyer du texte 'brut' mais c'est là que je coince.

Merci pour l'attention que tu porte a mon probleme.
Amicalement
Manu
Post by "Boss Hog" <***@tiscali.fr>
Re-salut,
j'ai répondu un peut vite, désolé...
en fait tu doit utiliser substringAfter et substringBefore
<xsl:variable name="textToBold">
<xsl:value-of select="' Belle '"/>
</xsl:variable>
<xsl:variable name="part1">
<xsl:value-of
select="string(concat(substring-before(voiture,$textToBold)"/>
</xsl:variable>
<xsl:variable name="part2">
<xsl:value-of
select="string(concat(substring-after(voiture,$textToBold)"/>
</xsl:variable>
<!--resultat-->
<xsl:value-of select="$part1"/>
<b><xsl:value-of select="$textToBold"/></b>
<xsl:value-of select="$part2"/>
Ouala, c'est juste un exemple...
@+ Boss Hog
Post by Manu
Bonjour,
Peut on conserver le code HTML contenu dans un XML qui est transformé via
un
Post by Manu
XSLT en un autre HTML ?
Par exemple, j'utilise un XmlTextWriter pour faire un XML simple contenant
peu d'information. Ensuite je le passe dans un XSLT pour en faire HTML.
Dim xmlTW As New System.Xml.XmlTextWriter(strFileXmlTmp,
System.Text.UnicodeEncoding.UTF8)
With xmlTW
.Formatting = Xml.Formatting.Indented
.Indentation = 3
.WriteStartDocument()
.WriteStartElement("root")
.WriteStartElement("voiture")
.WriteString("Ma <b>belle</b> voiture rouge.")
.WriteEndElement()
.WriteEndElement()
.WriteEndDocument()
.Flush()
.Close()
End With
Dim strFileHtmTmp As String = "c:\essai.htm")
Dim xslTran As New System.Xml.Xsl.XslTransform
xslTran.Load("C:\Transform.xslt")
xslTran.Transform(strFileXmlTmp, strFileHtmTmp, Nothing)
Source du C:\Transform.xslt
<?xml version="1.0" encoding="Windows-1252" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="1.0" encoding="iso-8859-15"
media-type="text/html" indent="yes" />
<xsl:template match="root">
<xsl:value-of select="voiture" />
</xsl:template>
</xsl:stylesheet>
Mais ça sort le code html de "Ma belle voiture" :(
Comment avoir Belle en gras ?
Manu
Manu
2005-01-24 11:45:26 UTC
Permalink
Résolu. voir microsoft.public.fr.dotnet
Post by Manu
Bonjour,
Peut on conserver le code HTML contenu dans un XML qui est transformé via
un XSLT en un autre HTML ?
Par exemple, j'utilise un XmlTextWriter pour faire un XML simple contenant
peu d'information. Ensuite je le passe dans un XSLT pour en faire HTML.
Dim xmlTW As New System.Xml.XmlTextWriter(strFileXmlTmp,
System.Text.UnicodeEncoding.UTF8)
With xmlTW
.Formatting = Xml.Formatting.Indented
.Indentation = 3
.WriteStartDocument()
.WriteStartElement("root")
.WriteStartElement("voiture")
.WriteString("Ma <b>belle</b> voiture rouge.")
.WriteEndElement()
.WriteEndElement()
.WriteEndDocument()
.Flush()
.Close()
End With
Dim strFileHtmTmp As String = "c:\essai.htm")
Dim xslTran As New System.Xml.Xsl.XslTransform
xslTran.Load("C:\Transform.xslt")
xslTran.Transform(strFileXmlTmp, strFileHtmTmp, Nothing)
Source du C:\Transform.xslt
<?xml version="1.0" encoding="Windows-1252" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="1.0" encoding="iso-8859-15"
media-type="text/html" indent="yes" />
<xsl:template match="root">
<xsl:value-of select="voiture" />
</xsl:template>
</xsl:stylesheet>
Mais ça sort le code html de "Ma belle voiture" :(
Comment avoir Belle en gras ?
Manu
Loading...