下面是输入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输出? 与浏览器有什么关系吗?
答案 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转换的结果