我正在尝试转换这个xsl语句,因为在windows server 2008上selectSingleNode是不支持的,我想在WS2008上以更支持的方式编写if语句。
所以使用下面的代码,我得到以下错误:"ABC"不是有效的XSLT或XPath函数
当前要转换的代码:
<xsl:if expr='ContractAddress(selectSingleNode("AddressNo").text,selectSingleNode("/Object/Contract/ConAddrNo").text)'>...</xsl:if>
所以请帮助如何转换上面的代码,我使用以下命名空间:
<xsl:stylesheet version="1.0" xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" xmlns:msxsl = "urn:schemas-microsoft-com:xslt" xmlns:vbs = "urn:schemas-sqlxml-org:vbs" xml:space="preserve">
XML示例:
<Address>
<ConAddrNo>123</ConAddrNo>
</Address> ... <Contract>
<AddressNo>123</AddressNo>
</Contract>
当前XSLT:
<xsl:if expr='ContractAddress(selectSingleNode("AddressNo").text, selectSingleNode("/Object/Contract/ConAddrNo").text)'>
<xsl:eval> FormatAddress(selectSingleNode("Line1").text, selectSingleNode("Line2").text, selectSingleNode("Line3").text, selectSingleNode("Line4").text, selectSingleNode("PostalCode").text) </xsl:eval>
</xsl:if>
带有@expr属性的xsl:if和xsl:eval是来自1998年XSLT成为W3C规范之前过时的Microsoft XSLT方言的指令。现在已经很少见到它了,因为微软在大约一年后用一个一致的XSLT实现来遵循它。
该方言有时被称为WD- XSL (WD代表工作草案),以它使用的名称空间命名,尽管微软自己倾向于简单地称之为"XSL"(与"XSLT"不同)。
我怀疑你会找到一个对WD-xsl有足够信心的人来理解你的代码并翻译它。