2009-02-19 12 views
1

Je suis nouveau sur XSLT. J'essaie de changer la taille de la police d'un texte spécifique dans le fichier XML en utilisant XSLT. Par exemple, j'ai le fichier CDCatalog.xml avec les données suivantes.Modifier la police en XML en utilisant XSLT

<?xml version="1.0" encoding="ISO-8859-1" ?> 
<?xml-stylesheet type="text/xsl" href="cdcat.xsl"?> 

<catalog> 
<cd> 
    <title>Empire Burlesque</title> 
    <artist><SmallText>Bob Dylan</SmallText><LineBreak/>*</artist> 
    <country>USA</country> 
    <company>Columbia</company> 
    <price>10.90</price> 
    <year>1985</year> 
    </cd> 
</catalog> 

et le fichier cdCat.XSL est-

<?xml version="1.0" encoding="ISO-8859-1" ?> 

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes" /> 
    <xsl:include href="cdCatalog.xsl" /> <!-- I added this --> 
<xsl:template match="/"> 
<html> 
<body> 
    <h2>My CD Collection</h2> 
<table border="1"> 
<tr bgcolor="#9acd32"> 
    <th align="left">Title</th> 
    <th align="left">Artist</th> 
    </tr> 
<xsl:for-each select="catalog/cd"> 
<tr> 
<td> 
    <xsl:value-of select="title" /> 
    </td> 
<td> 
<xsl:value-of select="artist" /> 
    </td> 
    </tr> 
    </xsl:for-each> 

    </table> 
    </body> 
    </html> 
    </xsl:template> 

</xsl:stylesheet> 

J'ai ajouté un nouveau fichier cdCatalog.XSL de fichier xsl avec suivant Détails-

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

<xsl:template match="LineBreak"> 
    <br/> 
</xsl:template> 

<xsl:template match="Superscript"> 
    <sup> 
     <xsl:value-of select="."/> 
    </sup> 
</xsl:template> 

<xsl:template match="SmallText"> 
    <font size="1"> 
     <xsl:value-of select="."/> 
    </font> 
</xsl:template> 
</xsl:stylesheet> 

et inclus ce fichier dans le CDCat fichier .xsl.et ajouté les balises - <smallText>, <LineBreak> dans le fichier CdCatalog.xml. Maintenant, quand j'ouvre le fichier xml je ne vois pas le LineBreak ni la différence de taille de police. Quelqu'un peut-il suggérer s'il me manque quelque chose.

Merci à l'avance Sai

Répondre

2

Vous devez utiliser apply-templates pour indiquer où votre modèle doit correspondre.

+0

bon point, ne pouvait même pas voir que dans le code – annakata

+0

Cela a fait l'affaire ... J'ai ajouté apply-templates. Je vous remercie! –

+0

s'il vous plaît ne pas utiliser la police si ... – annakata

0

XML ne dit rien sur la présentation, c'est le point entier. C'est un format .

Si vous voulez que votre XSLT affiche quelque chose où la présentation est importante, je vous suggère de transformer en HTML et de laisser HTML/CSS gérer le style. Ayant vu votre code actuel maintenant (indice: utilisez le formatage lors de la création de questions) n'utilisez pas la balise de police. Ce que vous voulez sémantiquement et dans la pratique est juste en-têtes <h1>, <h2>, <h3> etc, et je vous suggère toujours d'ajouter un lien CSS là-bas. Oh et <xsl:output method="html" />

+0

Merci pour vos commentaires. Je vais sûrement les garder en tête! –

0

En entre ces deux balises d'ouverture:

<html> 
<body> 

... Je placer un lien vers une feuille de style qui définit la taille des polices. Alternativement (et utile si vous voulez un fichier HTML autonome à envoyer par courrier électronique), vous pouvez y placer un bloc de style à la place.

+0

merci pour vos commentaires. En fait j'ai css stylesheet déjà défini, mais mon but était de faire une partie de la ligne du fichier XML à la petite police, et le reste à être comme défini dans css. J'ai donc ajouté un autre fichier xsl. –

Questions connexes