XML样式表:此XML文件似乎没有与之关联的任何样式信息

时间:2012-05-18 16:16:54

标签: xml xslt

我有一个简单的XML文件:

<?xml version="1.0" encoding="UTF-8"?>
<Document>
    <Page x1="71" y1="120" x2="527" y2="765" type="page" chunkCount="1" pageNumber="1" wordCount="1">...</Page>
        <Chunk x1="206" y1="120" x2="388" y2="144" type="unclassified">
            <Word x1="206" y1="120" x2="214" y2="144" font="Times-Roman" style="font-size:22pt">WORD</Word>
        </Chunk>       
</Document>

当试图查看它时,我的浏览器告诉我,我错过了样式表。由于我之前没有使用XML的经验,我的问题是:如何简单的XSLT(我理解?)看起来如何,这将使我能够在文件中坐标给出的位置查看XML文件的每个元素。帮助大大减少。

2 个答案:

答案 0 :(得分:2)

上面的XML有错误,你关闭页面两次,而 Chuck 错误地关闭 Chunk

在xml文件上指定xslt(样式表)是可选的,浏览器只是为什么他显示原始xml,这没关系。 您可以在服务器端应用xsl样式并决定应用哪个工作表,无需在xml文件中引用它。 你也可以在客户端进行xslt转换,这样会比较棘手,因为浏览器的实现方式不同,实现了这一点。

但是,如果您指定样式表,所有主要浏览器都将在客户端进行翻译(旧浏览器不会),但即使是IE6也可以

指向xml文件上指定的样式表的链接如下所示:

<?xml-stylesheet type="text/xsl" href="so.xslt"?>

样式表可能如下所示:

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">

<xsl:output omit-xml-declaration="yes" method="html"/>
<xsl:strip-space elements="*"/>

<xsl:template match="Document">
    <html>
     <head><title>Test</title></head>
        <xsl:apply-templates/>
    </html>
</xsl:template>

<xsl:template match="Page">
    <body>
        <xsl:apply-templates/><hr/>
        Page:<xsl:value-of select="@pageNumber"/>
    </body>
</xsl:template>

<xsl:template match="Chunk">
    <xsl:value-of select="."/><br/>
</xsl:template>

<xsl:template match="*">
<xsl:apply-templates/>
</xsl:template>

</xsl:stylesheet>

但是正如你所看到的,你可以用它来构建几乎任何东西。

答案 1 :(得分:-1)

只需将xmlns =“http://www.w3.org/1999/xhtml”xml:lang =“en”lang =“en”添加到您的html标记中。这对我有用。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title></title>
</head>
<body>

</body>
</html>