我的xsl文件如下:
<SELECT>
<xsl:attribute name="name">Team</xsl:attribute>
<xsl:attribute name="size">1</xsl:attribute>
<xsl:attribute name="onchange">selTeam_onclick()</xsl:attribute>
<xsl:if test='.[z:row]'>
<xsl:for-each select="z:row">
<OPTION>
<xsl:attribute name="value">
<xsl:value-of select="@TEAM_ID"/>
</xsl:attribute>
<xsl:if match='.[@TEAM_ID=@DEFAULTID]'>
<xsl:attribute name="selected"/>
</xsl:if>
<xsl:value-of select="@TEAM_NAME"/>
</OPTION>
</xsl:for-each>
</xsl:if>
<xsl:if test='.[$not$ z:row]'>
<OPTION>
<xsl:attribute name="value">-1</xsl:attribute>
No Teams
</OPTION>
</xsl:if>
</SELECT>
对于xml文件
<z:row TEAM_ID="1" TEAM_NAME="John" TEAM_LIST_TYPE="PUBLIC" TEAM_EDITABLE="Y" TEAM_OWNER="234"/>
<z:row TEAM_ID="2" TEAM_NAME="Maria" TEAM_LIST_TYPE="PUBLIC" TEAM_EDITABLE="Y" TEAM_OWNER="545"/>
<z:row TEAM_ID="3" TEAM_NAME="Dick" TEAM_LIST_TYPE="PUBLIC" TEAM_EDITABLE="N" TEAM_OWNER="766"/>
当我尝试通过上面的xsl文件生成html时,得到xpath表达式的错误。
答案 0 :(得分:1)
说“请帮助我这是紧急的”往往会阻止人们做出回应,因为他们认为你处于恐慌模式,并且不会仔细阅读和应用答案。
告诉我们你得到一个错误,但没有告诉我们错误是什么,显然是不友好的。你是否希望我们在被蒙住眼睛时帮助你?
正如Martin指出的那样,您的补充信息显示您使用的是旧的Microsoft WD-xsl语言,该语言是在1998年IE4中引入的,在XSLT 1.0最终确定之前几个月。这种语言已经过时了近20年,只能在非常有限的环境中使用;此外,微软已设法从网上删除所有痕迹,因此很难找到规范。
我能给你的唯一明智的建议是从WD-xsl向前推进到某个版本的XSLT,最好是现代版本。可悲的是,因为你处于恐慌模式,截止日期临近,我担心这些建议不会受到欢迎。
答案 1 :(得分:1)
要修复您显示的XSLT代码段,要使用的正确代码如下:
<SELECT>
<xsl:attribute name="name">Team</xsl:attribute>
<xsl:attribute name="size">1</xsl:attribute>
<xsl:attribute name="onchange">selTeam_onclick()</xsl:attribute>
<xsl:if test='z:row'>
<xsl:for-each select="z:row">
<OPTION>
<xsl:attribute name="value">
<xsl:value-of select="@TEAM_ID"/>
</xsl:attribute>
<xsl:if test='@TEAM_ID=@DEFAULTID'>
<xsl:attribute name="selected"/>
</xsl:if>
<xsl:value-of select="@TEAM_NAME"/>
</OPTION>
</xsl:for-each>
</xsl:if>
<xsl:if test='not(z:row)'>
<OPTION>
<xsl:attribute name="value">-1</xsl:attribute>
No Teams
</OPTION>
</xsl:if>
</SELECT>
两个主要变化是
<xsl:if match=...
替换为<xsl:if test=...
$not$
替换为not()
函数如前所述,您还需要将名称空间声明更改为http://www.w3.org/1999/XSL/Transform
,并删除&#34;语言&#34;属性。例如(更新名称空间URI以匹配您的实际名称)
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:rs="rs"
xmlns:z="z"
exclude-result-prefixes="rs z">
在http://xsltransform.net/ncntCSz
中查看此操作您的评论显示您在xsl:stylesheet元素上显示language="JavaScript"
这一事实表明您的实际XSLT也可能使用<xsl:script>
或<xsl:eval>
,我依旧记得支持它。如果是这样,那么重构XSLT将是一项更大的任务。
如果您需要询问有关XSLT其他部分的其他问题,请遵循Michael Kay在答案中给您的建议。