-1

我有一个 xml 文件,其中包含这样的元素

<video><title>XXXX</title><url>VIDEO ID OF YOUTUBE></url></video>

有没有办法使用 CSS 将元素显示为

<a href="http://www.youtube.com/videoid">XXXX</a>
4

3 回答 3

2

CSS 用于样式,如果您想阅读 XML 并生成 HTML 内容,您应该使用 Javascript。或者任何服务器端语言,如果您希望在将其发送到客户端浏览器之前完成。

于 2013-06-02T14:36:18.550 回答
1

正如 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 文件

于 2013-06-02T14:40:53.173 回答
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 输入文件是静态的,可以让网络浏览器进行转换。如果 XML 文件在服务器上,您可以在网页中编写转换并将 HTML 发送到 webbbrowser。这一切都取决于您的环境。

于 2013-06-02T14:52:18.280 回答