链接XML到XSL到CSS?

链接XML到XSL到CSS?,xml,xslt,xsd,Xml,Xslt,Xsd,好吧,这有点让人困惑。我不确定这是否仅仅是我自己的问题,或者XSLT是否更局限于CSS,因为我在CSS中的风格不能达到我的一半 目前,我有一些XML数据,它们链接到一个XSL文档。在我的XSL文档中,我有一个LI菜单,XML中的所有产品都显示得非常好。问题是,我想设置我的LI菜单的样式,所以我将其链接到了一个外部CSS样式表。一旦我将XSL链接到样式表,所有内容都会消失,变成一堆文本 这是不可能的吗 <?xml version="1.0" encoding="ISO-8859-1"?>

好吧,这有点让人困惑。我不确定这是否仅仅是我自己的问题,或者XSLT是否更局限于CSS,因为我在CSS中的风格不能达到我的一半

目前,我有一些XML数据,它们链接到一个XSL文档。在我的XSL文档中,我有一个LI菜单,XML中的所有产品都显示得非常好。问题是,我想设置我的LI菜单的样式,所以我将其链接到了一个外部CSS样式表。一旦我将XSL链接到样式表,所有内容都会消失,变成一堆文本

这是不可能的吗

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform
<xsl:template match="/">
<html>
<head>
<style>
ul
{
float:left:
width:100%;
padding:0;
margin:0;
list-style-type:none;
}
a
{
float:left;
width:6em;
text-decoration:none;
color:white;
background-color:blue;
padding:0.2em 0.6em;
border-right:1px solid white;
}
a:hover {background-color:#ff3300;}
li {display:inline;}
</style>
</head>
<body>
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">VRM Checker</a></li>
<li><a href="#">Products</a></li>
<li><a href="#">Contact Us</a></li>
</ul>
  <body>
  <h2>BMW X6 Available Parts</h2>
<table border="1">
  <tr bgcolor="#9acd32">
    <th>Products</th>
    <th>Description</th>
<th>Suitability</th>
<th>Caution</th>
<th>Price (In GBP)</th>
  </tr>
  <xsl:for-each select="catalog/cd">
  <tr>
    <td><xsl:value-of select="Products"/></td>
    <td><xsl:value-of select="Description"/></td>
    <td><xsl:value-of select="Suitability"/></td>
    <td><xsl:value-of select="Caution"/></td>
    <td><xsl:value-of select="Price"/></td>
<td><img src="{image}"></img></td>
</tr>
  </xsl:for-each>
</table>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>


与这里相比,您似乎对角色有点困惑

XSLT是一种功能强大的通用工具,可以将一种形式的XML转换为另一种形式,在本例中可能是XHTML(XML的一种形式)

CSS通常只用于设置HTML的样式(尽管您可以)

当您说“链接到XSL”时,我推断您是在使用浏览器为您进行转换(而不是在脚本/应用程序中)

没有源代码,很难诊断任何东西,但我猜通过添加CSS链接,您已经在某种程度上使XSL转换无效(或者只是让它什么都不做,因此使用了XML的默认呈现,因此是“一堆文本”)

您可能需要做的是确保CSS声明出现在XSLT输出的正确部分,即生成的XHTML的
部分

更新 现在检查源代码,XSLT是无效的XML:

  • XSLT样式表(“car.xsl”)应该如下所示:

    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" version="1.0" encoding="utf-8" indent="yes"/>
    
    <xsl:template match="/">
    <html>
    <head>
        <link rel="stylesheet" type="text/css" href="mystyle.css" />
    </head>
    <body>
    <ul>
        <li><a href="#">Home</a></li>
        <li><a href="#">VRM Checker</a></li>
        <li><a href="#">Products</a></li>
        <li><a href="#">Contact Us</a></li>
    </ul>
    <h2>BMW X6 Available Parts</h2>
    <table>
        <thead>
            <tr>
                <th>Products</th>
                <th>Description</th>
                <th>Suitability</th>
                <th>Caution</th>
                <th>Price (In GBP)</th>
            </tr>
        </thead>
        <xsl:for-each select="catalog/cd">
            <tr>
                <td><xsl:value-of select="Products"/></td>
                <td><xsl:value-of select="Description"/></td>
                <td><xsl:value-of select="Suitability"/></td>
                <td><xsl:value-of select="Caution"/></td>
                <td><xsl:value-of select="Price"/></td>
                <td><img src="{image}"></img></td>
            </tr>
        </xsl:for-each>
    </table>
    </body>
    </html>
    </xsl:template>
    </xsl:stylesheet>
    
    
    
    BMW X6可用零件 产品 描述 适合 小心 价格(英镑)
    然后将所有“优质CSS样式”放在上面XSLT样式表中引用的“mystyle.CSS”文档中


    当然,您也可以将CSS放在XSLT样式表本身中,这与HTML文档一样。

    您的问题可以使用一个小样本的xsml、XSLT和CSS来演示/支持您的问题。您好,谢谢您的回答。基本上,我现在已经摒弃了CSS,使用了W3学校的默认菜单代码并将其链接在一起。奇怪的是,这段代码在W3学校里运行得非常好,并且正是我所希望的。当我将代码转换成单独的XML/XSL文档时,它完全崩溃了。我在代码中也将XML链接到XSL文档。那么,有没有什么方法可以使用XSLT获得某种形式的高质量样式呢?一旦您按照我更新的答案中的详细说明修复了自己的样式,您就可以应用任何您想要的CSS了。我坚持使用最少的XSLT(足以用一些
  • 等创建基本的XHTML),并用CSS改变所有的外观,但这取决于您使用它的目的。
    
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" version="1.0" encoding="utf-8" indent="yes"/>
    
    <xsl:template match="/">
    <html>
    <head>
        <link rel="stylesheet" type="text/css" href="mystyle.css" />
    </head>
    <body>
    <ul>
        <li><a href="#">Home</a></li>
        <li><a href="#">VRM Checker</a></li>
        <li><a href="#">Products</a></li>
        <li><a href="#">Contact Us</a></li>
    </ul>
    <h2>BMW X6 Available Parts</h2>
    <table>
        <thead>
            <tr>
                <th>Products</th>
                <th>Description</th>
                <th>Suitability</th>
                <th>Caution</th>
                <th>Price (In GBP)</th>
            </tr>
        </thead>
        <xsl:for-each select="catalog/cd">
            <tr>
                <td><xsl:value-of select="Products"/></td>
                <td><xsl:value-of select="Description"/></td>
                <td><xsl:value-of select="Suitability"/></td>
                <td><xsl:value-of select="Caution"/></td>
                <td><xsl:value-of select="Price"/></td>
                <td><img src="{image}"></img></td>
            </tr>
        </xsl:for-each>
    </table>
    </body>
    </html>
    </xsl:template>
    </xsl:stylesheet>