0

Windows Server 2008ではselectSingleNodeがサポートされておらず、ifステートメントがWS2008でよりサポートされている方法で記述されているため、このxslステートメントを変換しようとしています。

したがって、以下のコードでは、次のエラーが発生します。

「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 が W3C 仕様になる前の 1998 年にさかのぼる、XSLT の廃止された Microsoft 方言からの命令です。約 1 年後に Microsoft がこれに準拠した XSLT 実装を行ったため、現在ではめったに見られなくなりました。

この方言は、それが使用する名前空間にちなんで WD-xsl (ワーキング ドラフトの WD) と呼ばれることがありますが、Microsoft 自体は単に "XSL" ("XSLT" とは区別して) と呼ぶ傾向がありました。

WD-xsl に自信があり、コードを理解して翻訳できる人はいないと思います。

于 2013-03-18T21:05:15.983 に答える