无法为特定要求创建xslt

时间:2016-08-18 03:37:30

标签: xslt

xslt新手。这是输入xml。

<Response>
     <RecordNumber/>
     <id>2014-12-24</id>
     <person>            
        <gender>MALE</gender>
        <genericLocations>            
           <effective>2012-11-28</effective>
        </genericLocations>
        <genericLocations>              
           <expiration>2012-11-27</expiration>               
           <effective>2008-12-09</effective>
        </genericLocations>
        <genericLocations>
            <expiration>2008-12-08</expiration>               
           <effective>2006-01-13</effective>
        </genericLocations>
        <genericLocations>
           <expiration>2006-01-12</expiration>               
           <effective>2001-07-17</effective>
        </genericLocations>
        <genericLocations>              
           <expiration>2001-07-16</expiration>               
           <effective>1901-01-01</effective>
        </genericLocations>
      </person>
  </Response>

以下是所需的输出XML:

<Response>
     <RecordNumber/>
     <id>2014-12-24</id>
     <person>            
        <gender>MALE</gender>
        <genericLocations>            
           <effective>2012-11-28</effective>
        </genericLocations>            
      </person>
  </Response>

输出xml只需要包含一个&#34; genericLocations&#34;其中&#34;到期的节点&#34;是空的(或缺失)或&#34;到期&#34;是在未来(超过今天的约会。)

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

假设您需要XSLT 2.0

<xsl:template match="person">
  <xsl:copy-of select="gender, 
     genericLocations[not(xs:date(expiration) le current-date())][1]"/>
</xsl:template>

加上一个身份模板来复制其他所有内容。