xsl - 如何根据xml节点的另一个值检索xml节点的值

时间:2012-08-08 17:38:05

标签: xslt

假设我有以下xml:

    <ns5:OrderTotal>
    <ns5:Name>AmountPaid</ns5:Name>
        <ns5:Description>Payment Received</ns5:Description>
    <ns5:SortOrder>4</ns5:SortOrder>
    <ns5:Value>16.95</ns5:Value>
    </ns5:OrderTotal>
    <ns5:OrderTotal>
    <ns5:Name>AmountDue</ns5:Name>
        <ns5:Description>Current Amount Due</ns5:Description>
    <ns5:SortOrder>5</ns5:SortOrder>
    <ns5:Value>0.0</ns5:Value>
    </ns5:OrderTotal>

如果我只想在NameTotal为AmountPaid时打印OrderTotal的值,那怎么能实现呢?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

我不知道您将如何打印所需的值,但可以使用以下XPath表达式收集它:

//ns5:OrderTotal[child::ns5:Name = 'AmountPaid']/ns5:Value

例如:

XML:

<ns5:Orders xmlns:ns5="a">
    <ns5:OrderTotal>
        <ns5:Name>AmountPaid</ns5:Name>
        <ns5:Description>Payment Received</ns5:Description>
        <ns5:SortOrder>4</ns5:SortOrder>
        <ns5:Value>16.95</ns5:Value>
    </ns5:OrderTotal>
    <ns5:OrderTotal>
        <ns5:Name>AmountDue</ns5:Name>
        <ns5:Description>Current Amount Due</ns5:Description>
        <ns5:SortOrder>5</ns5:SortOrder>
        <ns5:Value>0.0</ns5:Value>
    </ns5:OrderTotal>
</ns5:Orders>

XSL:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xd="http://www.oxygenxml.com/ns/doc/xsl" version="1.0"
    xmlns:ns5="a">
    <xsl:template match="/">
    <xsl:element name="Value">
        <xsl:value-of select="//ns5:OrderTotal[child::ns5:Name = 'AmountPaid']/ns5:Value"/>
    </xsl:element>
    </xsl:template>
</xsl:stylesheet>

输出:

<?xml version="1.0" encoding="utf-8"?>
<Value>16.95</Value>

答案 1 :(得分:0)

<xsl:if test="Name = 'AmountPaid'">
 <xsl:value-of select="Value"/>
</xsl:if>

尝试以上XSL