如何使用css将xml元素转换为url?

时间:2013-06-02 14:24:46

标签: css xml

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

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

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

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

3 个答案:

答案 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。这一切都取决于你的环境。