0

我正在尝试通过属性操作获取 LandLine_ExtId 基数的最大值和最小值。操作 value=del 的 Landline_ExtId 的最大值返回错误

xml输入

<Landline_ExtId  action='add'>771534777880</Landline_ExtId>
<Landline_ExtId  action='add'>771534777881</Landline_ExtId>
<Landline_ExtId  action='add'>771534777882</Landline_ExtId>
<Landline_ExtId  action='add'>771534777883</Landline_ExtId>
<Landline_ExtId  action='add'>771534777884</Landline_ExtId>
<Landline_ExtId  action='add'>771534777885</Landline_ExtId>
<Landline_ExtId  action='add'>771534777886</Landline_ExtId>
<Landline_ExtId  action='add'>771534777887</Landline_ExtId>
<Landline_ExtId  action='add'>771534777888</Landline_ExtId>
<Landline_ExtId  action='add'>771534777889</Landline_ExtId>
<Landline_ExtId  action='del'>551534882800</Landline_ExtId>
<Landline_ExtId  action='del'>551534882801</Landline_ExtId>
<Landline_ExtId  action='del'>551534882802</Landline_ExtId>
<Landline_ExtId  action='del'>551534882803</Landline_ExtId>
<Landline_ExtId  action='del'>551534882804</Landline_ExtId>
<Landline_ExtId  action='del'>551534882805</Landline_ExtId>
<Landline_ExtId  action='del'>551534882806</Landline_ExtId>
<Landline_ExtId  action='del'>551534882807</Landline_ExtId>
<Landline_ExtId  action='del'>551534882808</Landline_ExtId>
<Landline_ExtId  action='del'>551534882809</Landline_ExtId>

XSLT:

           <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:template match="/">
    <xsl:element name="getMaxOld">
     <xsl:value-of select="/Data/Landline_ExtId[not(. &lt;      /Data/Landline_ExtId[@action='del'])][1]"/>
      </xsl:element>
     <xsl:element name="getMinOld">
    <xsl:value-of select="/Data/Landline_ExtId[not(. &gt; /Data/Landline_ExtId[@action='del'])][1]"/>
       </xsl:element>
           <xsl:element name="getMaxNew">
         <xsl:value-of select="/Data/Landline_ExtId[not(. &lt; /Data/Landline_ExtId[@action='add'])][1]"/>
       </xsl:element>
       <xsl:element name="getMinNew">
    <xsl:value-of select="/Data/Landline_ExtId[not(. &gt; /Da    ta/Landline_ExtId[@action='add'])][1]"/>
     </xsl:element>
</xsl:template>


    </xsl:stylesheet>

我得到了 GetMaxOld 的错误值。代替 551534882809 , 771534777880 被返回

4

1 回答 1

1

[@action='del']您在查找最小值和最大值时缺少谓词,请参见下一个:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

    <xsl:template match="/">
        <data>
            <getMaxOld>
                <xsl:value-of select="/Data/Landline_ExtId[@action='del'][not(. &lt; /Data/Landline_ExtId[@action='del'])][1]"/>
            </getMaxOld>
            <getMinOld>
                <xsl:value-of select="/Data/Landline_ExtId[@action='del'][not(. &gt; /Data/Landline_ExtId[@action='del'])][1]"/>
            </getMinOld>
            <getMaxNew>
                <xsl:value-of select="/Data/Landline_ExtId[@action='add'][not(. &lt; /Data/Landline_ExtId[@action='add'])][1]"/>
            </getMaxNew>
            <getMinNew>
                <xsl:value-of select="/Data/Landline_ExtId[@action='add'][not(. &gt; /Data/Landline_ExtId[@action='add'])][1]"/>
            </getMinNew>
        </data>
    </xsl:template>
</xsl:stylesheet>

应用于此 XML 时:

<?xml version="1.0" encoding="UTF-8"?>
<Data>
    <Landline_ExtId action='add'>771534777880</Landline_ExtId>
    <Landline_ExtId action='add'>771534777881</Landline_ExtId>
    <Landline_ExtId action='add'>771534777882</Landline_ExtId>
    <Landline_ExtId action='add'>771534777883</Landline_ExtId>
    <Landline_ExtId action='add'>771534777884</Landline_ExtId>
    <Landline_ExtId action='add'>771534777885</Landline_ExtId>
    <Landline_ExtId action='add'>771534777886</Landline_ExtId>
    <Landline_ExtId action='add'>771534777887</Landline_ExtId>
    <Landline_ExtId action='add'>771534777888</Landline_ExtId>
    <Landline_ExtId action='add'>771534777889</Landline_ExtId>
    <Landline_ExtId action='del'>551534882800</Landline_ExtId>
    <Landline_ExtId action='del'>551534882801</Landline_ExtId>
    <Landline_ExtId action='del'>551534882802</Landline_ExtId>
    <Landline_ExtId action='del'>551534882803</Landline_ExtId>
    <Landline_ExtId action='del'>551534882804</Landline_ExtId>
    <Landline_ExtId action='del'>551534882805</Landline_ExtId>
    <Landline_ExtId action='del'>551534882806</Landline_ExtId>
    <Landline_ExtId action='del'>551534882807</Landline_ExtId>
    <Landline_ExtId action='del'>551534882808</Landline_ExtId>
    <Landline_ExtId action='del'>551534882809</Landline_ExtId>
</Data>

它为您提供下一个输出:

<?xml version="1.0" encoding="UTF-8"?>
<data>
    <getMaxOld>551534882809</getMaxOld>
    <getMinOld>551534882800</getMinOld>
    <getMaxNew>771534777889</getMaxNew>
    <getMinNew>771534777880</getMinNew>
</data>
于 2013-10-06T07:10:43.000 回答