xml – XSLT if – 属性等于字符串
发布时间:2020-12-16 23:20:42 所属栏目:百科 来源:网络整理
导读:我正在使用xsl:if在更大的xsl:template块中执行一个小条件,并且我想测试当前xsl:template匹配节点的属性的相等性. 以下不起作用: xsl:template match="sometag[@type='sometype']" ==Sometag== xsl:if test="@something!='hidden'"something/xsl:if !--a
我正在使用xsl:if在更大的xsl:template块中执行一个小条件,并且我想测试当前xsl:template匹配节点的属性的相等性.
以下不起作用: <xsl:template match="sometag[@type='sometype']"> ==Sometag== <xsl:if test="@something!='hidden'">something</xsl:if> <!--a lot of other stuff that I don't want to duplicate by multiplying the xsl:templates--> <xsl:template> 这个测试似乎总是评估为假,也许我没有良好的语法? 这个XML: <sometag type="sometype" something="visible"/> <sometag type="sometype" something="hidden"/> <sometag type="sometype"/> 应该给 ==Sometag== something... ==Sometag== ==Sometag== something... 解决方法
我不完全确定你想要实现的目标,但我会试一试. 你的sometag元素之一根本就没有某个属性.没有这个属性与@something!=’hidden’完全不同.因此,如果something属性不存在,则不输出字符串“something”. 因此,您需要在xsl:if条件被评估之前测试是否存在某个属性. 输入 <?xml version="1.0" encoding="utf-8"?> <root> <sometag type="sometype" something="visible"/> <sometag type="sometype" something="hidden"/> <sometag type="sometype"/> </root> 样式表 <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text"/> <xsl:strip-space elements="*"/> <xsl:template match="/root"> <xsl:apply-templates/> </xsl:template> <xsl:template match="sometag[@type='sometype']"> <xsl:text>==Sometag==</xsl:text> <xsl:choose> <xsl:when test="@something"> <xsl:if test="@something!='hidden'"> <xsl:text>something</xsl:text> </xsl:if> </xsl:when> <xsl:otherwise> <xsl:text>something</xsl:text> </xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet> 编辑@Tim C建议更短的版本: <xsl:template match="sometag[@type='sometype']"> <xsl:text>==Sometag==</xsl:text> <xsl:if test="@something!='hidden' or not(@something)"> <xsl:text>something</xsl:text> </xsl:if> </xsl:template> 产量 ==Sometag==something==Sometag====Sometag==something (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |