2017-05-17 28 views
0

我有一個在Firefox中正常工作的XPath表達式,但是當我在IE中查看文件時出現錯誤。有沒有讓IE能理解我的表情的解決方法?xsl文件中的XPath表達式在IE中不起作用

我的XSL(我刪除了很多,所以它更容易看到)。

<?xml version="1.0"?> 
 
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:date="http://exslt.org/dates-and-times" exclude-result-prefixes="#all" > 
 
\t <xsl:output indent="yes"/> 
 
\t <xsl:output method="html" encoding="UTF-8"/> 
 
\t <xsl:template match="/"> 
 
\t \t <html> 
 
\t \t \t <head> 
 
\t \t \t \t <title> 
 
\t \t \t \t \t <xsl:value-of select="versions/project" /> 
 
\t \t \t \t </title> 
 
\t \t \t \t <style type="text/css"> 
 
\t \t \t \t \t ... 
 
\t \t \t \t </style> 
 
\t \t \t </head> 
 
\t \t \t <body> 
 
\t \t \t \t <div class="content"> 
 
\t \t \t \t \t 
 
\t \t \t \t \t \t \t \t <xsl:for-each select="/releasenotes/notes/note[component/@type=$unitTag]"> 
 
\t \t \t \t \t \t \t \t \t <xsl:for-each select=".[component/@number=$versionNumber and text/@type='new']"> 
 
\t \t \t \t \t \t \t \t \t \t <li type="disc"> 
 
\t \t \t \t \t \t \t \t \t \t \t <xsl:value-of select="text" /> 
 
\t \t \t \t \t \t \t \t \t \t \t <xsl:for-each select="component[not(@type=$unitTag)]"> 
 
\t \t \t \t \t \t \t \t \t \t \t \t <xsl:sort select="@type" order="ascending"/> 
 
\t \t \t \t \t \t \t \t \t \t \t \t , <a href="#{@type}_{@number}"> 
 
\t \t \t \t \t \t \t \t \t \t \t \t \t <xsl:variable name="unitType" select="@type"/> 
 
\t \t \t \t \t \t \t \t \t \t \t \t \t <xsl:value-of select="//components/component[tag=$unitType]/name" />&#160;(<xsl:value-of select="@number" />) 
 
\t \t \t \t \t \t \t \t \t \t \t \t </a> 
 
\t \t \t \t \t \t \t \t \t \t \t </xsl:for-each> 
 
\t \t \t \t \t \t \t \t \t \t </li> 
 
\t \t \t \t \t \t \t \t \t </xsl:for-each> 
 
\t \t \t \t \t \t \t \t </xsl:for-each> 
 
\t \t \t \t \t \t \t 
 
\t \t \t \t \t \t </xsl:for-each> 
 
\t \t \t \t \t </xsl:for-each> 
 
\t \t \t \t \t 
 
\t \t \t \t </div> 
 
\t \t \t </body> 
 
\t \t </html> 
 
\t </xsl:template> 
 
</xsl:stylesheet>

的問題似乎是在這一行:

<xsl:for-each select=".[component/@number=$versionNumber and text/@type='new']"> 

這個錯誤而導致:

Expected token 'EOF' found '['. .-->[<--component/@number='$versionNumber' and text/@type='new'] 

回答

1

而不是

<xsl:for-each select="/releasenotes/notes/note[component/@type=$unitTag]"> 
    <xsl:for-each select=".[component/@number=$versionNumber and text/@type='new']"> 

看來你只是想

<xsl:for-each select="/releasenotes/notes/note[component/@type=$unitTag][component/@number=$versionNumber and text/@type='new']"> 

<xsl:for-each select="/releasenotes/notes/note[component/@type=$unitTag and component/@number=$versionNumber and text/@type='new']"> 
1

XPath 1.0語法不允許使用,所以IE正確拒絕它。

其實你可以用

<xsl:if test="condition"> 

更換

<xsl:for-each select=".[condition]"> 

,或者由馬丁Honnen的建議合併到父xsl:for-each