2014-09-24 74 views
0

我在使用下面的xsl转换xml文档时遇到了一些麻烦。该代码使用xmlDoc.transformNode在IE上工作,但以下代码在chrome中不起作用 - resultDocument返回null。在IE浏览器中工作的XSL转换,而不是在Chrome中

var xslString = "<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
     <xsl:template match="options"> 
     <div id="divAllOpt" class="sDiv" ALL="1" style="FONT-WEIGHT:bold;"> 
      All 
     </div> 
     <div id="divGroupOnOpt" class="sDiv" GROUP="1" style="FONT-WEIGHT:bold;"> 
      Group By 
     </div> 
     <xsl:apply-templates select="option[. != '']"> 
      <xsl:sort select="."/> 
     </xsl:apply-templates> 
     </xsl:template> 
     <xsl:template match="option"> 
     <div class="sDiv"> 
      <xsl:choose> 
      <xsl:when test="@value"> 
       <xsl:attribute name="VALUE"> 
       <xsl:value-of select="@value"></xsl:value-of> 
       </xsl:attribute> 
      </xsl:when> 
      <xsl:otherwise> 
       <xsl:attribute name="VALUE"> 
       <xsl:value-of select="."></xsl:value-of> 
       </xsl:attribute> 
      </xsl:otherwise> 
      </xsl:choose> 
      <xsl:attribute name="title"> 
      <xsl:value-of select="."></xsl:value-of> 
      </xsl:attribute> 
      <xsl:value-of select="."></xsl:value-of> 
      <xsl:if test="@count"> 
      (<xsl:value-of select="@count"></xsl:value-of>) 
      </xsl:if> 
     </div> 
     </xsl:template> 
    </xsl:stylesheet>"; 
var xsltProcessor = new XSLTProcessor(); 
var xslSheet = new DOMParser().parseFromString(xslString, 'application/xml'); 
xsltProcessor.importStylesheet(xslSheet); 
var resultDocument = xsltProcessor.transformToFragment(xmlDoc.documentElement, document); 

,我试图转换XML文档(xmlDoc.documentElement.outerHTML)如下图所示 -

"<options> 
    <option count="3">ABC</option> 
    <option count="8">XYZ</option> 
    <option count="32">CVB</option> 
    <option count="1">TST</option> 
    <option count="2">CNN</option> 
</options>" 

任何想法?谢谢。

编辑 - 我把jsfiddle放在一起 - 在Firefox中工作,但不在Chrome中。

http://jsfiddle.net/facm1ptz/5/

回答

2

不要指望能够把XML转换成HTML文档,并把它正确序列早在XML与outerHTML。

如果我稍微改变语法

<xsl:sort select="."></xsl:sort> 

http://jsfiddle.net/70swrmjb/之后,Chrome提供了一个结果,而是过程的整个做法是错误的,HTML(既不是HTML 4和HTML5的)是不是XML,并把XML元素因为XML不能可靠地工作。从正确充当application/xml的文件加载XSLT,你肯定不会有任何这样的问题。当然,您还可以运行其他问题,例如Chrome不支持从文件网址加载XML,除非您明确地以较低的安全设置启动它。但只要你通过HTTP加载并且不使用不同的XML和XSLT位置,你应该没问题。

+0

我同意。我试图修改一个使用xml岛(!!!)的旧应用程序,并试图在最终重写之前使用chrome中的基本功能来获取一些页面。感谢您的回应! – Bookamp 2014-09-24 17:57:09

相关问题