如果兄弟姐妹满足条件,则输出precedin-sibling的值

时间:2015-03-07 22:14:55

标签: xml xslt

如果ID_Type ='BadgeId'

,我想输出ID(5018)的值

xml代码:

<ws:Identification_Data>
    <ws:ID>14007</ws:ID>
    <ws:ID_Type>ID1</ws:ID_Type>
</ws:Identification_Data>
<ws:Identification_Data>
    <ws:ID>5018</ws:ID>
    <ws:ID_Type>BadgeId</ws:ID_Type>
</ws:Identification_Data>

XSLT:

 <Badge_Number>
   <xsl:value-of select="ws:Identification_Data[ws:ID_Type='BadgeId']/preceding-                                           sibling::ws:ID/text()"/>
 </Badge_Number> 

1 个答案:

答案 0 :(得分:1)

您的问题不太清楚,因为(a)您只向我们展示了XML的一部分 - 更重要的是 - (b)您没有在需要时告诉我们您的位置。

假设您的上下文是<ws:Identification_Data>节点的父节点,您可以调用:

<Badge_Number>
    <xsl:value-of select="ws:Identification_Data[ws:ID_Type='BadgeId']/ws:ID"/>
</Badge_Number> 

并获得:

<Badge_Number>5018</Badge_Number>

作为示例中的结果。这里没有必要寻找前面的兄弟姐妹;您选择具有正确Type类型的父级,并从中选择其他(ID)子级。