2016-04-27 7 views
0

XML文書を使用して、の回答者のという名前を出力します。ここでTimestampcreate要素の日付と時刻の値に基づいて人名を取得するには

は、現在の状態<TimestampCreate>要素がParty/PartyName要素からformattednameを表示し、正午前に2016年3月24日の日付と時刻を持っている状態 です。

現在のステータス<TimestampCreate>に正午03/24/2016以降の日付がある場合は、CaseParty/CasePartyNameの書式設定された名前を表示します。

どうすればよいですか?

私のXMLドキュメント

<Integration> 
    <Case> 
     <CaseParty ID="17154970" InternalCasePartyID="1636956553" InternalPartyID="1615052853"> 
      <Connection Word="RSP" BaseConnection="DF" ID="39228182" InternalCasePartyConnectionID="1638740325"> 
       <Description>Respondent</Description> 
       <TimestampCreate>4/27/2016 9:25:08 AM</TimestampCreate> 
       <DateAdded>04/27/2016</DateAdded> 
      </Connection> 
      <CasePartyName Current="true" ID="10737806" InternalNameID="1615969730"> 
       <FormattedName>Tree, Walnut</FormattedName> 
      </CasePartyName> 
      <TimestampCreate>4/27/2016 9:25:08 AM</TimestampCreate> 
     </CaseParty> 
     <ProtectionOrders> 
      <ProtectionOrder Op="E" InternalProtectionOrderID="2408"> 
       <Statuses> 
        <Status Op="A"> 
         <Current>true</Current> 
         <Active>Yes</Active> 
         <Date Op="A">04/27/2016</Date> 
         <TimestampCreate Op="A">04/27/2016 12:01:58:963</TimestampCreate> 
        </Status> 
       </Statuses> 
      </ProtectionOrder> 
     </ProtectionOrders> 
    </Case> 
    <Party ID="17154970" InternalPartyID="1615052853"> 
     <PartyName ID="10737806" Current="true" InternalNameID="1615969730"> 
      <FormattedName>Nelson, Plince</FormattedName> 
    </Party> 
</Integration> 

私のXSLTコード

<xsl:for-each select="CasePartyName[@Current='true']"> 
    <xsl:value-of select="FormattedName"/> 
</xsl:for-each> 

答えて

0

あなたの質問は完全には明らかではありません - そして、あなたの入力がうまく形成されません。

一般に、XSLT 1.0には日付や時刻の概念がありません。サイズの比較は数値でしかできません。つまり、タイムスタンプを数字に変換して、後のタイムスタンプでより大きな数字を生成する必要があります。次の入力所与例えば

XML

<root> 
    <node> 
     <TimestampCreate>3/23/2016 9:25:08 AM</TimestampCreate> 
    </node> 
    <node> 
     <TimestampCreate>3/24/2016 9:25:08 AM</TimestampCreate> 
    </node> 
    <node> 
     <TimestampCreate>3/24/2016 9:25:08 PM</TimestampCreate> 
    </node> 
    <node> 
     <TimestampCreate>3/25/2016 9:25:08 AM</TimestampCreate> 
    </node> 
</root> 

次のスタイルシート:

XSLT 1.0

<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="/root"> 
    <output> 
     <xsl:for-each select="node"> 
      <item> 
       <xsl:variable name="date" select="substring-before(TimestampCreate, ' ')" /> 
       <xsl:variable name="time" select="substring-before(substring-after(TimestampCreate, ' '), ' ')" /> 
       <xsl:variable name="pm" select="contains(TimestampCreate,'p') or contains(TimestampCreate,'P')"/> 

       <xsl:variable name="year" select="substring-after(substring-after($date, '/'), '/')" /> 
       <xsl:variable name="month" select="substring-before($date, '/')" /> 
       <xsl:variable name="day" select="substring-before(substring-after($date, '/'), '/')" /> 

       <xsl:variable name="hour12" select="substring-before($time, ':')" /> 
       <xsl:variable name="minute" select="substring-before(substring-after($time, ':'), ':')" /> 
       <xsl:variable name="second" select="substring-after(substring-after($time, ':'), ':')" /> 

       <xsl:variable name="hour" select="$hour12 mod 12 + 12*$pm"/> 

       <xsl:variable name="timestamp-num" select="$second + 100 * $minute + 10000 * $hour + 1000000 * $day + 100000000 * $month + 10000000000 * $year"/> 

       <xsl:choose> 
        <xsl:when test="$timestamp-num &lt; 20160324120000"> 
         <!-- RESULT WHEN BEFORE --> 
         <xsl:text>BEFORE</xsl:text> 
        </xsl:when> 
        <xsl:otherwise> 
         <!-- RESULT WHEN AFTER --> 
         <xsl:text>AFTER</xsl:text> 
        </xsl:otherwise> 
       </xsl:choose> 
      </item> 
     </xsl:for-each> 
    </output> 
</xsl:template> 

</xsl:stylesheet> 

意志戻り値:

結果

<?xml version="1.0" encoding="UTF-8"?> 
<output> 
    <item>BEFORE</item> 
    <item>BEFORE</item> 
    <item>AFTER</item> 
    <item>AFTER</item> 
</output> 
関連する問題