dee*_*eem 3 xml xslt cross-browser pretty-print mime-types
我从几种XML格式转换为一种标准.我的XSL看起来如下:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="xml" encoding="UTF-8" indent="yes" omit-xml-declaration="yes"/>
<xsl:template match="list | store">
<list>
<xsl:for-each select="item | product | product-store">
<item>
<name>
<xsl:choose>
<xsl:when test="name"><xsl:value-of select="substring-before(name, ' ')" /></xsl:when>
<xsl:otherwise><xsl:value-of select="name | title" /></xsl:otherwise>
</xsl:choose>
</name>
<desc>
<xsl:choose>
<xsl:when test="name"><xsl:value-of select="substring-after(name, ' ')" /></xsl:when>
<xsl:otherwise><xsl:value-of select="desc" /></xsl:otherwise>
</xsl:choose>
</desc>
<nr><xsl:value-of select="index | number" /></nr>
</item>
</xsl:for-each>
</list>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
我的示例XML是
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<?xml-stylesheet type="text/xsl" href="transform.xsl"?>
<list>
<item>
<index>1362242627</index>
<name>test 22</name>
</item>
<item>
<index>2362625609</index>
<name>test 4</name>
</item>
<item>
<index>736274650</index>
<name>test 76</name>
</item>
</list>
Run Code Online (Sandbox Code Playgroud)
为什么它不能在Firefox 17,IE9和谷歌浏览器等浏览器中正确显示?它们像普通文本一样显示,但返回类型为"text/xml".它只在Opera中正常工作.
我认为问题是告诉什么是"正确的"显示.像Firefox或IE这样的浏览器假设一旦你将带有xml-stylesheet类型处理指令的XML文档加载text/xsl到浏览器窗口中,你就想将XML转换为浏览器知道要呈现的东西,比如HTML或者像(X)HTML和SVG这样的日子(或者加上MathML).然而,您的样式表接受XML输入并将其转换为浏览器未知的某种XML结果格式,因此它所做的只是在结果树中呈现文本节点的内容.Opera似乎将XML输入转换为XML结果,但它似乎认识到结果格式是未知的,并且这种方式决定呈现结果的源树.这可能是你喜欢的,但我不确定是否有规范要求这种行为.
| 归档时间: |
|
| 查看次数: |
5547 次 |
| 最近记录: |