晚上好
我在使用XSLT时遇到了麻烦,我必须检查/修改3年前开始的项目。
目前,应用模板的格式如下<xsl:apply-templates select="foo[make != 'Contoso'][prices/listPrice != '0.0'][type = 'USED']"/>
。
如果ID foo
的最后一个字符是P,我需要将其丢弃并转到下一个字符。
我搜索了各种解决方案,但没有人能解决问题。
编辑:
我正在使用1.0 XSLT版本
答案 0 :(得分:0)
我假设您输入的XML是这样的:
<root>
<foo ID="XXXP">
<make>Abcd</make>
<prices>
<listPrice>5000.0</listPrice>
</prices>
<type>USED</type>
</foo>
<foo ID="XXX">
<make>Xyz</make>
<prices>
<listPrice>2000.0</listPrice>
</prices>
<type>USED</type>
</foo>
</root>
要介绍您的修改,请将[not(ends-with(@ID, 'P'))]
添加到
select
属性,含义:
[...]
)。ID
)的foo
属性。ID
不以P
结尾。由于您未指定XSLT版本,因此我使用的是2.0版。
有关工作示例,请参见http://xsltransform.net/3MP2uBF/1
附加说明:我认为,检查 price!= 0 的更好方法是:
[number(prices/listPrice) != 0]
(我在上述示例中包括了它。)
如果限于版本1.0,请使用相应的等效表达式
(1.0版没有ends-with
函数)。