我是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和字体大小的区别。任何人都可以建议我是否遗漏了什么。
提前致谢 西
答案 0 :(得分:2)
您需要使用apply-templates来指示模板匹配的位置才能生效。
答案 1 :(得分:0)
XML没有提及演示文稿,这就是重点。这是数据格式。
如果您希望XSLT输出到表示事项的内容,我建议您转换为HTML并让HTML / CSS处理样式。
现在已经看过你的实际代码(提示:在创建问题时使用格式化)不要使用字体标记。您在语义上和实践中想要的只是标题<h1>
,<h2>
,<h3>
等,我仍然建议您在其中添加CSS链接。哦和<xsl:output method="html" />
答案 2 :(得分:0)
介于这两个开头标签之间:
<html>
<body>
...我会在一个定义字体大小的样式表中放置一个链接。或者(如果您希望通过电子邮件发送自包含的HTML文件,则非常有用),您可以在其中放置样式块。