1

生年月日が日付より前の「OtherEmployees」のカウントを含むxmlファイルから.csvを生成しようとしています(例:1970年1月1日)。構文がわかりません。

日付は現在dd/mm/yyyy形式であることに注意してください。

これはxmlの例です-

<Companies>
<Company>
    <CompanyReference>00000060</CompanyReference>
    <Contact>
        <PersonID>63</PersonID>
        <Title>Mrs</Title>
        <Forename>EXAMPLE</Forename>
        <Middlename/>
        <Surname>NAME</Surname>
        <DOB>27/05/1928</DOB>
    </Contact>
    <OtherEmployees>
        <OtherEmployee>
            <PersonID>28870</PersonID>
            <Title>Miss</Title>
            <Forename>EXAMPLE</Forename>
            <Middlename/>
            <Surname>NAME2</Surname>
            <DOB>03/05/1953</DOB>
        </OtherEmployee>
        <OtherEmployee>
            <PersonID>28871</PersonID>
            <Title>Miss</Title>
            <Forename>EXAMPLE</Forename>
            <Middlename/>
            <Surname>NAME3</Surname>
            <DOB>11/07/1961</DOB>
        </OtherEmployee>
    </OtherEmployees>
</Company>

私は次のように生年月日を持つ他の従業員の数まで取得することができました-

<xsl:value-of select="count(OtherEmployees/OtherEmployee[DOB])"/>

ただし、DOBを別の日付と比較する必要があります。たとえば1970年1月1日とし、生年月日が1970年1月1日より前の場合にのみOtherEmployeeをカウントに返します。

4

1 に答える 1

2

XSLT 2.0では、xs:dateデータ型を利用できます。

<xsl:value-of select="count(OtherEmployees/OtherEmployee[DOB and xs:date(concat(substring(DOB, 7), '-', substring(DOB, 4, 2), '-', substring(DOB, 1, 2))) lt xs:date('1970-01-01')])"/>

dd/mm/yyyyXSLT 1.0を使用すると、データ形式を数値に簡単に変換yyyymmddして比較できます。

<xsl:value-of select="count(OtherEmployees/OtherEmployee[DOB and number(concat(substring(DOB, 7), substring(DOB, 4, 2), substring(DOB, 1, 2))) &lt; 19700101])"/>
于 2013-01-07T15:50:48.457 に答える