Xslt 下一个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>

如何获取下一个xml标记的名称

<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]可能会选择文本节点或注释节点。这就是答案。如果我错了,请纠正我,如果有,请提出其他建议。