通过 XSLT 设置 XML 样式
我有一个 XSLT 文档,它吐出 XML 文档的内容,如下所示:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head>
<title>CL Results</title>
<link href="xml.css" rel="stylesheet" type="text/css" />
</head>
<body>
<h1>34 Participants</h1>
<table>
<xsl:for-each select="results/person">
<tr>
<th colspan="16">
<a>
<xsl:attribute name="href">
mailto:<xsl:value-of select="@epost" />
</xsl:attribute>
<xsl:value-of select="@name"/>
</a>
</th>
</tr>
<xsl:for-each select="stage">
<tr>
<xsl:for-each select="team">
<td><xsl:value-of select="."/></td>
</xsl:for-each>
</tr>
</xsl:for-each>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
我希望为包含某些团队的 td 元素提供不同的样式。
因此,我需要一个包含“Barcelona”、“Arsenal”和“Lyon”(还有更多)的数组,每当 XML 的 team 元素包含其中任何一个时,我希望该团队以红色等显示。
我该怎么做?
I have a XSLT document that spits out the contents of an XML document like this:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head>
<title>CL Results</title>
<link href="xml.css" rel="stylesheet" type="text/css" />
</head>
<body>
<h1>34 Participants</h1>
<table>
<xsl:for-each select="results/person">
<tr>
<th colspan="16">
<a>
<xsl:attribute name="href">
mailto:<xsl:value-of select="@epost" />
</xsl:attribute>
<xsl:value-of select="@name"/>
</a>
</th>
</tr>
<xsl:for-each select="stage">
<tr>
<xsl:for-each select="team">
<td><xsl:value-of select="."/></td>
</xsl:for-each>
</tr>
</xsl:for-each>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
I wish to give the td elements that contain certain teams different styling.
So I need an array containing for instance "Barcelona", "Arsenal" and "Lyon" (plus many more), and whenever the team element of the XML contains either of these, I want the team to be displayed in e.g. red colour.
How do I do that?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
尝试
然后 使用 CSS 样式表为每个团队定义适当的颜色。最好使用 XSLT 来正确安排 HTML 的结构,并使用 CSS 来设置每个 HTML 元素的详细样式。
(如果需要,您也可以使用 XSLT 生成 CSS 样式表,尽管我在实践中很少看到这样做。)
Try
and then use a CSS stylesheet to define the appropriate colour for each team. It's best to use XSLT to get the structural arrangement of the HTML right, and CSS for the detailed styling of each HTML element.
(You can generate the CSS stylesheets using XSLT as well if you want, though I've rarely seen it done in practice.)
你最好与模板匹配。
或者另一种选择是保留与 XSL 相关的 XML 文件并使用 document() 函数引用它。因此,如果您有一个名为 redTeams.xml 的文件,如下所示:
您可以使用如下方式引用它:
或者,如果您需要以编程方式执行此操作,您还可以使用 xsl:param 将变量传递到 XSL 中并与之匹配。
You're better off matching with templates.
Or another option is to keep an XML file relative to the XSL and reference it using the document() function. So if you had a file called redTeams.xml that looked like this:
You could reference it with something like this:
Or if you need to do it programmatically, you could also pass a variable into the XSL using xsl:param and match against that.
我假设您指的是 xsl 转换的这一部分:
您可以使用条件:
I assume you are referring to this part of your xsl transform :
You can use conditionals :