基于属性值的xml xsl节点选择

时间:2015-03-12 15:13:20

标签: xml xslt

我想根据属性值选择一个兄弟节点。 xml的相关部分看起来像,

<wd:Job_Classifications>
    <wd:Job_Classification_ID>20</wd:Job_Classification_ID>
    <wd:Job_Classification_Group wd:Descriptor="SUS Occupational Categories">              
        <wd:ID wd:type="Job_Classification_Group_ID">SUS_OCC_CATEGORIES</wd:ID>        
    </wd:Job_Classification_Group>    
</wd:Job_Classifications>

<wd:Job_Classifications>   
    <wd:Job_Classification_ID>9009</wd:Job_Classification_ID>        
    <wd:Job_Classification_Group wd:Descriptor="SUS Classification Code">                
        <wd:ID wd:type="Job_Classification_Group_ID">SUS_CLASS_CODE</wd:ID>        
    </wd:Job_Classification_Group>    
</wd:Job_Classifications>

<wd:Job_Classifications>    
    <wd:Job_Classification_ID>99</wd:Job_Classification_ID>
    <wd:Job_Classification_Group wd:Descriptor="Administrative Code">                
        <wd:ID wd:type="Job_Classification_Group_ID">ADMIN_CODE</wd:ID>        
    </wd:Job_Classification_Group>    
</wd:Job_Classifications>

我正在尝试的xsl就像

<xsl:value-of select="../wd:Job_Classifications
                      [@wd:Descriptor
                      ='SUS Classification Code']
                      /wd:Job_Classification_ID" />

这没有给我任何结果。我在一个两级for循环中,不得不使用../来获得直接的父级。 当我使用下面的时候,

<xsl:value-of select="../wd:Job_Classifications
                      /wd:Job_Classification_ID" />

我获得了所有ID,但我需要根据wd:Job_Classification_Group描述符值进行选择。

1 个答案:

答案 0 :(得分:0)

您将谓词[@wd:Descriptor ='SUS Classification Code']应用于名为wd:Job_Classifications的元素,但XML中唯一的wd:Job_Classifications元素没有该属性或任何其他名称。

也许你的意思是../wd:Job_Classifications [wd:Job_Classification_Group /@wd:Descriptor='SUS Classification Code'] /wd:Job_Classification_ID