0

msxsl:node-set() 関数を使用して、変数に格納されているノード セットからノードを取得しようとしていますが、何も取得できません。私のxmlは次のようになります:

<Root>
  <Items olditemnumber="100" newitemnumber="200">
    <Item ItemNumber="100" ItemAliasCode="1001" ItemCode="X" />
    <Item ItemNumber="100" ItemAliasCode="1002" ItemCode="X" />
    <Item ItemNumber="200" ItemAliasCode="2001" ItemCode="X" />
    <Item ItemNumber="200" ItemAliasCode="2003" ItemCode="X" />
    <Item ItemNumber="100" ItemAliasCode="1003" ItemCode="P" />
    <Item ItemNumber="100" ItemAliasCode="1004" ItemCode="P" />
    <Item ItemNumber="200" ItemAliasCode="2002" ItemCode="P" />
  </Items>
</Root>

私の xslt では、変数にノードのサブセットを設定し、msxsl:node-set() 関数を使用して呼び出します。ただし、これは何も返しません。XSLT は次のようになります。

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                              xmlns:msxsl="urn:schemas-microsoft-com:xslt">
 <xsl:template match="//Root">
   <xsl:variable name="OldItemNumber" select="/Items/@olditemnumber"/>
   <xsl:variable name="NewItemNumber" select="/Items/@newitemnumber"/>
   <xsl:variable name="OldItems">
     <xsl:value-of select="//Item[@ItemNumber = $OldItemNumber]"/>
   </xsl:variable>
   <xsl:variable name="NewItems">
     <xsl:value-of select="//Item[@ItemNumber = $NewItemNumber]"/>
   </xsl:variable>
   <xsl:for-each select="msxsl:node-set($OldItems)/Item">
     ...work
   </xsl:for-each>
 </xsl:template>
</xsl:stylesheet>

XSLT は for-each ループをスキップしますが、変数を割り当てる際に Xpath クエリが適切なノードを取得することをウォッチで確認できます。ウォッチは、msxsl:node-set() 関数が未定義であることも示しています。どんな助けでも大歓迎です。私は何が欠けていますか?

4

1 に答える 1