xslt:XSLT文档('')函数不适用于我的代码

时间:2016-04-28 09:53:29

标签: xslt-1.0

我不是XSLT专家,在我的下面的xslt代码中,试图从xml字符串中提取值,如下所示。

XML输入为字符串:

==========================================================================
   <?xml version="1.0" encoding="UTF-8" ?>
<RootElement xmlns="http://com.nt.int/NT/v1.0/CustomInputs">
   <stringFlag><RESPONSE><RESULT>
        <RESPONSECODE>20000</RESPONSECODE>
        <MESSAGE>Successfully Received Revenue Information</MESSAGE>
        <STATUS>OK</STATUS>
    </RESULT>
</RESPONSE>
</stringFlag>  
</RootElement>
==================================================

XSLT样式表代码如下:

 <xsl:template match="/">

  <xsl:variable name="test">
<xsl:copy-of select="/ns0:RootElement/ns0:stringFlag"/></xsl:variable>  
 <xsl:variable name="vTestNodeset" select="document('')/*/*/xsl:variable[@name='test']"/>

 <xsl:variable name="var1" select="string($vTestNodeset/stringFlag/RESPONSE/RESULT/RESPONSECODE)"/>
 <xsl:variable name="var2" select="string($vTestNodeset/stringFlag/RESPONSE/RESULT/MESSAGE)"/>
 <xsl:variable name="var3" select="string($test/RESPONSE/RESULT/STATUS)"/>
        <output1><xsl:value-of select="$var1"/></output1>
        <output2><xsl:value-of select="$var2"/></output2>                     
        <output3><xsl:value-of select="$var3"/></output3>         
   </xsl:template>

期望XML输出如下

<?xml version="1.0" encoding="UTF-8"?>
<output1>20000 </output1>
 <output2>Successfully Received Revenue Information </output2>
 <output3>OK</output3>

我无法按预期得到结果。我知道可能的方式,但没有帮助。请帮忙,谢谢。

1 个答案:

答案 0 :(得分:0)

  

但是vTestNodeset总是空的,我想是的   select =“document('')/ * / xsl:variable [@ name ='test']”未执行为   预期

不,它为空的原因是$test变量是xsl:template的子项和xsl:styleshet的子项(未在您的代码段中显示) - 所以正确的路径是它会是:

document('')/*/*/xsl:variable[@name='test'] 

可能有其他原因导致它为空。我们这里没有完全可重复的例子。但是如果你将代码减少到所需的最低值:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

<xsl:template match="/">
    <xsl:variable name="test">TEST</xsl:variable> 
    <result>
        <xsl:value-of select="document('')/*/*/xsl:variable[@name='test']"/>
    </result>
</xsl:template>

</xsl:stylesheet>

你应该获得:

<?xml version="1.0" encoding="UTF-8"?>
<result>TEST</result>

结果。