我正在尝试转换此xsl语句,因为在Windows Server 2008上不支持 selectSingleNode 而if语句I wana以更受支持的方式写入WS2008。
因此,使用以下代码,我收到以下错误:
“ABC”不是有效的XSLT或XPath函数
要转换的Currrent代码:
<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>
答案 0 :(得分:2)
xsl:if具有@expr属性,而xsl:eval是来自过时的Microsoft XSLT方言的指令,该方言的日期是1998年,之后XSLT成为W3C规范。现在很少见,因为微软在一年之后就采用了符合要求的XSLT实现方式。
方言在其使用的命名空间之后有时被称为WD-xsl(WD for working draft),尽管微软本身倾向于简称为“XSL”(与“XSLT”不同)。
我怀疑你会发现任何人对WD-xsl有足够的信心来理解你的代码并进行翻译。