Hallo allemaal,

Ik heb het probleem dat ik tekens als "\n" "Â" "kopiëren" enzo te zien krijg dit dus eigenlijk opgelost zouden moeten zijn met de encoding zoals te zien in de code hieronder.


<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />


Het gaat om een xhtml bestand want gegenereerd wordt vanuit een php bestand die een xsl en xml bestand samenvoegt.

Weet iemand hier een oplossing voor, want blijkbaar is er toch iets mis met de encoding in mijn geval lijkt me.

Alvast bedankt.
Waarschijnlijk staan die fout in het bestand (je moet de &xxx code gebruiken) of in de database.
Dat is dus het probleem, het zijn aangeleverde xml bestanden. Dus ik kan helaas niks veranderen aan de xml bestanden of de db waar ze uit gehaald worden.
In welke encoding wordt de XML-input aangeleverd?
Er wordt in het xml bestand geen encoding meegegeven helaas en kon niks vinden welke encoding ze gebruiken, maar heb ze gebelt en ze zullen me morgen laten weten welke encoding het is.

Iig heb ik UTF-8 en ISO-8859-1 geprobeert, maar geen resultaat.

Dit is iig de eerste regel van het xml bestand.

<?xml version="1.0"?>

Helaas zonder encoding.
Hoe ziet je XSLT eruit?

Deze gebruik ik vaak, werkt prima. Let ook even op de omit-xml-declaration.

<xsl:output method="xml" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
        doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" indent="yes" omit-xml-declaration="yes" encoding="UTF-8"/>
Dank je, iig zijn nu de rare tekens weg, nu blijft alleen "\n" nog over helaas.

Dit is wat ik nu gebruik. Dus het lijkt ISO-8859-1 te zijn. Maar vreemd dat hij niet de "\n" meteen ook meepakt.


<xsl:output method="xml" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" indent="yes" omit-xml-declaration="yes" encoding="ISO-8859-1"/> 


\n is een newline, een enter. Waar komt deze vandaan? Staat deze zo in de XML?
Ja die \n staat in de tekst van de langere omschrijvingen.

En nog een ander probleempje. Ik heb nu alles perfect staan, alleen die omschrijving hoofden laat ie net zo vaak zien als regels in het specificatieblokje. Is er een functie waardoor ik die titel maar 1 keer kan laten zien?

Dit is het stukje code voor de title.
 
<xsl:for-each select="CategoryFeatureGroup">
<xsl:variable name="CategoryID" select="@ID"/>

<xsl:for-each select="//ProductFeature">
<xsl:variable name="CategoryGroup" select="@CategoryFeatureGroup_ID"/>
<xsl:if test="$CategoryID=$CategoryGroup">

<xsl:for-each select="//CategoryFeatureGroup">
<xsl:if test="@ID=$CategoryGroup">

<xsl:value-of select="FeatureGroup/Name/@Value"/>

</xsl:if>
</xsl:for-each>
</xsl:if>
</xsl:for-each>


Hij filtert eerst alle categorieën eruit, daarna gaat ie de aantallen aanwezige regels per categorie eruit halen en als 3de stap haalt hij dan per categorie de naam van die categorie erbij. Alleen hij geeft dan elke keer per categorie de naam net zovaak weer als er regels in die categorie zitten.

Ik heb al rondgezocht naar een command zodat hij ipv each maar once doet. Zodat hij met zoeken stopt bij de eerste match die hij tegenkomt.

Reageren