使用XSLT更改XML格式

时间:2009-02-19 10:23:06

标签: xslt

我是XSLT的新手。我正在尝试使用XSLT更改XML文件中特定文本的字体大小。例如 - 我有CDCatalog.xml文件,其中包含以下数据。

  <?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>

和cdCat.XSL文件是 -

<?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> 

我添加了一个新的xsl文件cdCatalog.XSL文件,其中包含以下详细信息 -

<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>

并将此文件包含在CDCat.xsl文件中。并在CdCatalog.xml文件中添加了标记 - <smallText><LineBreak>。现在当我打开xml文件时,我看不到LineBreak和字体大小的区别。任何人都可以建议我是否遗漏了什么。

提前致谢 西

3 个答案:

答案 0 :(得分:2)

您需要使用apply-templates来指示模板匹配的位置才能生效。

答案 1 :(得分:0)

XML没有提及演示文稿,这就是重点。这是数据格式。

如果您希望XSLT输出到表示事项的内容,我建议您转换为HTML并让HTML / CSS处理样式。


现在已经看过你的实际代码(提示:在创建问题时使用格式化)不要使用字体标记。您在语义上和实践中想要的只是标题<h1><h2><h3>等,我仍然建议您在其中添加CSS链接。哦和<xsl:output method="html" />

答案 2 :(得分:0)

介于这两个开头标签之间:

<html>
<body>

...我会在一个定义字体大小的样式表中放置一个链接。或者(如果您希望通过电子邮件发送自包含的HTML文件,则非常有用),您可以在其中放置样式块。