使用XSLT从具有多个属性的节点检索XML值

使用XSLT从具有多个属性的节点检索XML值,xml,xslt,Xml,Xslt,我试图使用xslt获取具有多个属性的xml节点的值 下面是xml的一个片段: <?xml version="1.0" encoding="UTF-8"?> <wd:Report_Data> <wd:Report_Entry> <wd:Account>Accrued Deferred Compensation</wd:Account> <wd:Summary_Level_01 wd:Des

我试图使用xslt获取具有多个属性的xml节点的值

下面是xml的一个片段:

<?xml version="1.0" encoding="UTF-8"?>
<wd:Report_Data>
    <wd:Report_Entry>
         <wd:Account>Accrued Deferred Compensation</wd:Account>
         <wd:Summary_Level_01 wd:Descriptor="Descriptor_Text">
             <wd:ID wd:type="Summary_ID" wd:parent_id="UR_CHART_OF_ACCOUNTS" wd:parent_type="Account_ID">DESIRED VALUE</wd:ID>
         </wd:Ledger_Account_Summary_Level_01>-
    </wd:Report_Entry>
<Report_Data>

应计递延薪酬
期望值
-
我想把文本“期望值”输入到我的输出中。 我可以获取如下值:

<xsl:value-of select="wd:Summary_Level_01/@wd:Descriptor"/>

如何获取所需的值

我尝试过使用它(但这只适用于单属性元素):



这可能是xslt/xml处理器的问题吗?

您问题中的示例xml名称空间格式不正确,因为
wd:
前缀没有名称空间绑定,但是,假设真正的XML是名称空间格式良好的,并且样式表中映射到相同名称空间URI的前缀与源文档中的相同,那么您可能需要如下内容:

<xsl:value-of select="wd:Summary_Level_01/wd:ID[@wd:type='Summary_ID']"/>


wd:ID
是一个元素,而不是一个属性,因此它不需要
@
前缀。

您问题中的示例XML不是名称空间格式良好的,因为
wd:
前缀没有名称空间绑定,但是,假设真正的XML是名称空间格式良好的,并且样式表中映射到相同名称空间URI的前缀与源文档中的相同,那么您可能需要如下内容:

<xsl:value-of select="wd:Summary_Level_01/wd:ID[@wd:type='Summary_ID']"/>

wd:ID
是一个元素,而不是一个属性,因此它不需要
@
前缀