下一个xml标记的名称

时间:2014-02-25 12:04:44

标签: xslt xslt-2.0

我如何获得下一个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>

2 个答案:

答案 0 :(得分:1)

您的测试仅选择与前一个兄弟姐妹有PARSETAG的节点(不包括PARSETAG)。因此,您的节点为StatusRoamIndicatorPreloadCode。如果您需要来自这三个节点的数据,请不要使用following-sibling来提取数据,否则您将排除Status。当上下文节点为Status时,表达式following-sibling:node()将在 Status之后选择节点,并且您将只获得RoamIndicator和{{1结果。

因此,要获得PreloadCode后应使用的所有兄弟节点的名称和值:

PARSETAG

答案 1 :(得分:0)

following-sibling::*/name()为您提供一系列字符串,其中包含以下兄弟元素的名称。