1

假设我有以下 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>

如果我只想在名称为 AmountPaid 时打印 OrderTotal 的值,怎么能做到这一点?

谢谢你的帮助。

4

2 回答 2

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>
于 2012-08-08T17:49:39.603 回答
0
<xsl:if test="Name = 'AmountPaid'">
 <xsl:value-of select="Value"/>
</xsl:if>

试试上面的XSL

于 2012-08-08T17:47:56.077 回答