0

XSLTに小さな問題があります...

基本的に私は次のxmlを持っています:

<Root>
 <Node>
  <Prop1></Prop1>
  <Prop2></Prop2>
  <Date>03/05/2013</Date>
  ...
 </Node>
 <Node>
  <Prop1></Prop1>
  <Prop2></Prop2>
  <Date>01/01/2012</Date>
  ...
 </Node>
</Root>

これから私はテーブルを生成しますそれは次のようになります:

<table>
<tr>       
    <th colspan="2" style="text-align:left;">
        <u>
        Table: 
        </u>    
    </th>
</tr> 
<xsl:for-each select="Root/Node[current-date() < date]">    
    <xsl:sort select="date" />          
            <tr>                
                <td><xsl:value-of select="prop1"/></td>
                <td>
                        ...       
                </td>
                <td><xsl:value-of select="date"/></td>
            </tr> 
</xsl:for-each>
</table>

日付が遅れているノードのみを取得したいのですが、基本的にはdate<currentdateです。

どうすればそれを達成できるか考えていますか?

4

1 に答える 1

1

XPathは大文字と小文字が区別されNode、名前が実際にNode1またはである場合、要素と一致しないことを最初に覚えておいてくださいNode2

XSLT 1.0を使用しているとすると、現在の日付を取得する組み込みの方法がないため、パラメーターとして渡す必要があります。あなたがそれを機能させることができれば、このようなものがトリックをするはずです:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes"/>
  <xsl:param name="currentDate" />

  <xsl:template match="/">
    <table>
      <tr>
        <th colspan="2" style="text-align:left;">
          <u>
            Table:
          </u>
        </th>
      </tr>
      <xsl:apply-templates select="Root/*[translate($currentDate, 'T:-', '') &lt; 
                                          translate(Date, 'T:-', '')]">
        <xsl:sort select="Date" />
      </xsl:apply-templates>
    </table>
  </xsl:template>

  <xsl:template match="Root/*">
    <tr>
      <td>
        <xsl:value-of select="Prop1"/>
      </td>
      <td>
        ...
      </td>
      <td>
        <xsl:value-of select="Date"/>
      </td>
    </tr>
  </xsl:template>
</xsl:stylesheet>
于 2013-03-14T08:35:57.467 に答える