“ABC”不是有效的XSLT或XPath函数

时间:2013-03-18 14:40:21

标签: xml xslt vbscript msxsl

我正在尝试转换此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>

1 个答案:

答案 0 :(得分:2)

xsl:if具有@expr属性,而xsl:eval是来自过时的Microsoft XSLT方言的指令,该方言的日期是1998年,之后XSLT成为W3C规范。现在很少见,因为微软在一年之后就采用了符合要求的XSLT实现方式。

方言在其使用的命名空间之后有时被称为WD-xsl(WD for working draft),尽管微软本身倾向于简称为“XSL”(与“XSLT”不同)。

我怀疑你会发现任何人对WD-xsl有足够的信心来理解你的代码并进行翻译。