我有一个 xml 文件,其中包含这样的元素
<video><title>XXXX</title><url>VIDEO ID OF YOUTUBE></url></video>
有没有办法使用 CSS 将元素显示为
<a href="http://www.youtube.com/videoid">XXXX</a>
CSS 用于样式,如果您想阅读 XML 并生成 HTML 内容,您应该使用 Javascript。或者任何服务器端语言,如果您希望在将其发送到客户端浏览器之前完成。
正如 Nicklas 指出的那样,许多人认为 Css 旨在用于样式,仅此而已。不过,更一般地说,它旨在展示您的信息。这是一个边缘案例,我很难说它是否走得太远或在 CSS 的范围内:这只是改变了呈现方式,还是做更多的事情?
我相信很多人,比如 Nicklas,会争辩说你想做的事情超出了 CSS 的预期目的。而且我可能同意尼克拉斯的观点,在大多数情况下,我发现这是一种不太理想的处理方式。
话虽如此,有可能
#url:before {
display: inline-block;
content: "<a href=\"http://www.youtube.com/";
}
#url:after {
display: inline-block;
content: "\">";
}
#text:after {
display: inline-block;
content: "</a>";
}
注意:我在这个例子中使用 Html 是为了制作一个 JsFiddle,但是同样的策略应该适用于一个 Xml 文件
我不知道为此使用 CSS 的方法。但是您可以使用 XSLT 样式表来做到这一点。那是你要的吗?然后一个与此类似的 XSLT 样式表可以帮助您:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
<xsl:output method="html" indent="yes"/>
<xsl:template match="/" >
<body>
<xsl:apply-templates select ="/items/video"/>
</body>
</xsl:template>
<xsl:template match="video" >
<li>
<a>
<xsl:attribute name="href">
<xsl:value-of select="./url" disable-output-escaping="yes" />
</xsl:attribute>
<xsl:value-of select="./title"/>
</a>
</li>
</xsl:template>
<xsl:template match=
"*[not(@*|*|comment()|processing-instruction())
and normalize-space()=''
]"/>
<xsl:template match="text()"/>
</xsl:stylesheet>
这假定 XML 输入文件如下所示:
<?xml version="1.0" encoding="utf-8" ?>
<items>
<video>
<title>XXXX</title>
<url>VIDEO ID OF YOUTUBE></url>
</video>
<video>
<title>XXXX</title>
<url>VIDEO ID OF YOUTUBE></url>
</video>
</items>
当我不了解您的要求时,很难说您应该如何进行转换。XSLT 转换可以通过多种方式完成。如果 XML 输入文件是静态的,可以让网络浏览器进行转换。如果 XML 文件在服务器上,您可以在网页中编写转换并将 HTML 发送到 webbbrowser。这一切都取决于您的环境。