2013-07-23 4 views
0

msxsl : node-set() 함수를 사용하여 변수에 저장된 노드 집합에서 노드를 가져 오려고 시도했지만 아무 것도 얻지 못했습니다. 내 XML은 다음과 같습니다 : 내 XSLT에서msxsl : node-set()을 인식하지 못했습니다.

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

내가 노드의 부분 집합으로 변수를 채우기 위해 노력하고 msxsl 사용하여 호출 노드 집합() 함수를. 그러나 아무 것도 반환하지 않습니다. 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는 이상 건너 뛰고를위한 각 루프, 나는 XPath 쿼리는 변수를 할당 할 권리 노드를 잡고 시계에서 볼 수 있지만. 이 시계는 msxsl : node-set() 함수가 정의되지 않았 음을 알려줍니다. 어떤 도움을 주시면 감사하겠습니다. 내가 뭘 놓치고 있니?

답변

1
<?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" select="//Item[@ItemNumber = $OldItemNumber]"/> 
    <xsl:variable name="NewItems" select="//Item[@ItemNumber = $NewItemNumber]"/> 
    <xsl:for-each select="$OldItems"> 
    ...work 
    </xsl:for-each> 
</xsl:template> 
</xsl:stylesheet> 

msxsl:node-set는 경우에 필요하지 않은 노드 세트에 결과 나무 조각 (일명, RTF)를 변환하는 것입니다.

xsl:value-of은 텍스트 노드를 만드는 데 사용되므로 추가 쿼리/처리 할 입력 트리 노드를 선택하는 데 사용하지 마십시오.

+0

완벽하게 작동합니다. 고맙습니다! 나는 xsl : value-of가 그 방식으로 사용될 수 없다는 것을 깨닫지 못했다. – DevNoob

관련 문제