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

时间:2013-11-19 13:41:20

标签: 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: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>

我想在输出中输入“DESIRED VALUE”文本。 我可以抓住这样的价值:

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

如何获取所需的值?

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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