xml未在浏览器中显示

时间:2010-10-07 11:52:46

标签: xslt

下面是输入xml:

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="value-of.xsl"?>
<MemeberDetails>
    <Employee>
        <Name>Madhu</Name>
        <Sex>Male</Sex>
        <DOB>2/10/1982</DOB>
        <Address>JP Nagar ,Bangalore</Address>
        <MemberId>094631</MemberId>
        <Designation>SSE</Designation>
        <Department>SG</Department>
    </Employee>
</MemeberDetails>

其中,我在上面的xml中使用HREF引用value-of.xsl文件。这个文件驻留在同一个文件夹中。

以下是value-of.xslt文件:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output indent="yes"/>
    <xsl:template match="/">
        <CGIEmployeeDetails>
            <PersonalDetails>
                <Name>
                    <xsl:value-of select="/MemeberDetails/Employee/Name"/>
                </Name>
                <Gender>
                    <xsl:value-of select="/MemeberDetails/Employee/Sex"/>
                </Gender>
                <ResidentialAddress>
                    <xsl:value-of select="/MemeberDetails/Employee/Address"/>
                </ResidentialAddress>
            </PersonalDetails>
            <WorkingDetails>
                <PSAID>
                    <xsl:value-of select="//MemberId"/>
                </PSAID>
                <Designation>
                    <xsl:value-of select="/MemeberDetails/Employee/Designation"/>
                </Designation>
                <Department>
                    <xsl:value-of select="/MemeberDetails/Employee/Department"/>
                </Department>
            </WorkingDetails>
        </CGIEmployeeDetails>
    </xsl:template>
</xsl:stylesheet>

当我在浏览器中运行xml以上时,输出将作为文本而不是XML生成。 如果我使用像Oxygen这样的编辑器并转换相同的xml文件,输出将是XML。

我不明白为什么浏览器无法转换XML输出? 与浏览器有什么关系吗?

3 个答案:

答案 0 :(得分:4)

在浏览器中,“XML格式”视图主要是添加语法突出显示和Emacscript事件处理程序(显示和隐藏chlids节点等)的样式表。

因此,当文档具有XSLT样式表PI时,浏览器不会运行“XML格式”样式表,但会尝试呈现转换结果。每个浏览器的意图都不一样。只保证一件事:如果它是正确的XHTML或HTML,则按原样渲染。

如果转换结果不是正确的XHTML,也不是HTML(纯文本,其他XML词汇表),渲染机制各不相同:即Chrome是唯一没有显示未知XML词汇表的内容,其他人则将其呈现为HTML无论如何(仅渲染文字)。

答案 1 :(得分:0)

您使用的是Internet Explorer吗?这是我所知道的唯一一个完全忽略你的XSL样式表的浏览器

答案 2 :(得分:0)

@Alejandro提供了一个很好的解释。

使用IE,您可以通过右键单击IE窗口并选择“查看源”来查看XSLT转换的结果