我有一个xml文件,其中包含这样的元素
<video><title>XXXX</title><url>VIDEO ID OF YOUTUBE></url></video>
有没有办法使用CSS将元素显示为
<a href="http://www.youtube.com/videoid">XXXX</a>
答案 0 :(得分:2)
CSS用于样式化,如果您希望阅读XML并生成HTML内容,则应使用Javascript。或者任何服务器端语言,如果您希望在将其发送到客户端浏览器之前完成。
答案 1 :(得分:1)
正如尼克拉斯指出的那样,许多人认为Css应该用于造型而已。但更一般地说,它旨在用于呈现您的信息。这是一个边缘案例,我很难说它是否太过分或在CSS的范围内:这只是改变了演示文稿,还是在做更多的事情?
我相信很多人,比如尼克拉斯,会认为你想要做的事情超出了CSS的预期目的。而且我可能会同意尼克拉斯的观点,因为在大多数情况下,我发现这是一种不那么理想的事情。
话虽如此,it is possible
#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>";
}
注意:为了制作JsFiddle,我在这个例子中使用了Html,但同样的策略应该适用于Xml文件
答案 2 :(得分:0)
我不知道为此使用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输入文件是静态的,则可以让webbrowser进行转换。如果XML文件位于服务器上,您可以在awebpage中编写转换并将HTML发送到webbbrowser。这一切都取决于你的环境。