0

我正在尝试转换此 xsl 语句,因为在 windows server 2008 上不支持selectSingleNode并且我希望在 WS2008 上以更受支持的方式编写它。

所以使用下面的代码我得到以下错误:

“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>
4

1 回答 1

2

带有@expr 属性的xsl:if 和xsl:eval 是XSLT 的过时Microsoft 方言的指令,该方言可追溯到1998 年,当时XSLT 成为W3C 规范之前。现在已经很少见到了,因为微软在大约一年后推出了符合标准的 XSLT 实现。

该方言有时在其使用的命名空间之后称为 WD-xsl(WD 表示工作草案),尽管 Microsoft 本身倾向于将其简称为“XSL”(与“XSLT”不同)。

我怀疑你会找到任何对 WD-xsl 有足够信心的人来理解你的代码并翻译它。

于 2013-03-18T21:05:15.983 回答