月をチェックインしようとしている場合youth/dateofbirth
(上記の私のコメントを参照)、次のいずれかを使用できます。
month-from-date()
dateofbirth
ある場合xs:date
またはある
month-from-dateTime()
場合dateofbirth
xs:dateTime
xs:date の 2012-06-14
例: xs:dateTime の例: 2012-06-14T22:34:52.682-06:00
dateofbirth
xs:date または xs:dateTime としてキャスト可能な場合は、月を手動で抽出する必要があります (ほとんどの場合は を使用) tokenize()
。
を使った例month-from-date()
です。の要素宣言を追加する必要があり、(の代わりに)guests
内部サブセットを適切に閉じる必要がありました。]>
>]
XML 入力
<!DOCTYPE guests [
<!ELEMENT guests (Guest+)>
<!ELEMENT Guest (Gname, youth+, car+)>
<!ELEMENT youth (Yname, dateofbirth)>
<!ELEMENT car (carType, excursion+)>
<!ELEMENT excursion (week, location)>
<!ELEMENT Gname (#PCDATA)>
<!ELEMENT Yname (#PCDATA)>
<!ELEMENT dateofbirth (#PCDATA)>
<!ELEMENT carType (#PCDATA)>
<!ELEMENT week (#PCDATA)>
<!ELEMENT location (#PCDATA)>
]>
<guests>
<Guest>
<Gname>Guest 1</Gname>
<youth>
<Yname>Youth A</Yname>
<dateofbirth>2012-06-14</dateofbirth>
</youth>
<car>
<carType/>
<excursion>
<week/>
<location/>
</excursion>
</car>
</Guest>
<Guest>
<Gname>Guest 2</Gname>
<youth>
<Yname>Youth B</Yname>
<dateofbirth>2012-08-14</dateofbirth>
</youth>
<car>
<carType/>
<excursion>
<week/>
<location/>
</excursion>
</car>
</Guest>
<Guest>
<Gname>Guest 3</Gname>
<youth>
<Yname>Youth C</Yname>
<dateofbirth>2000-12-25</dateofbirth>
</youth>
<car>
<carType/>
<excursion>
<week/>
<location/>
</excursion>
</car>
</Guest>
</guests>
XQuery
<guests>
{
for $guest in /guests/Guest[month-from-date(youth/dateofbirth) = 8]
return $guest/Gname
}
</guests>
XML 出力
<guests>
<Gname>Guest 2</Gname>
</guests>
実際、XQuery は次のように縮小できます。
<guests>{/guests/Guest[month-from-date(youth/dateofbirth) = 8]/Gname}</guests>