Xslt 下一个xml标记的名称
如何获取下一个xml标记的名称Xslt 下一个xml标记的名称,xslt,xslt-2.0,Xslt,Xslt 2.0,如何获取下一个xml标记的名称 <SUBSCRIBER> <Anumber>639093700012</Anumber> <FirstCallDate>20090612124207</FirstCallDate> <SetyCode>TNT</SetyCode> <PARSETAG>parseind</PARSETAG> <Status>
<SUBSCRIBER>
<Anumber>639093700012</Anumber>
<FirstCallDate>20090612124207</FirstCallDate>
<SetyCode>TNT</SetyCode>
<PARSETAG>parseind</PARSETAG>
<Status>ACT</Status>
<RoamIndicator>1</RoamIndicator>
<PreloadCode>P1.0</PreloadCode>
</SUBSCRIBER>
下面的代码从标记PARSETAG开始解析,并打印下一个xml标记值。如何获取下一个xml标记名
例如,下面的代码打印ACT、1、P1.0标记值,但我还需要相应的标记名
<xsl:template match="SUBSCRIBER/*" mode="RULE_DA_TEST">
<xsl:if test="preceding-sibling::PARSETAG">
<!-- some logic here -->
<xsl:variable name="tagname" select="following-sibling::node()[1]"/>
<xsl:variable name="tagvalue" select="????????????????"/>
<!-- some logic here -->
</xsl:if>
</xsl:template>
以下同级::*/name为您提供一个字符串序列,其中包含以下同级元素的名称。您的测试仅选择具有PARSETAG的节点作为前面的同级,它排除PARSETAG。因此,您的节点是Status、RoamIndicator和preload代码。如果要从这三个节点获取数据,请不要使用以下同级来提取数据,否则将排除状态。当上下文节点为Status时,表达式following sibling:node将选择Status之后的节点,结果将仅获得RoamIndicator和prelocode 因此,要在PARSETAG之后获取所有同级节点的名称和值,应使用:
<xsl:if test="preceding-sibling::PARSETAG">
<xsl:variable name="tagname" select="name(.)"/>
<xsl:variable name="tagvalue" select="."/>
</xsl:if>
我想我的问题有点不清楚。我想将下一个标记名及其值保存在变量中以便处理。请查看我刚刚编辑的问题。我想,我知道了,如果您要查找下一个元素节点的名称,那么我将使用namefollowing同级节点::*[1],因为following同级节点::node[1]可能会选择文本节点或注释节点。这就是答案。如果我错了,请纠正我,如果有,请提出其他建议。