<ROOTNODE>
<Blocks>
<Block>
<Ref/>
<BlockDates Start="2015-10-20" End="2015-10-25" />
<Types>
<Type TypeCode="SGL">
<TypeAllocations>
<TypeAllocation Start="2015-10-26" End="2015-10-27" />
<TypeAllocation Start="2015-10-26" End="2015-10-25" />
</TypeAllocations>
</Type>
<Type TypeCode="SGL">
<TypeAllocations>
<TypeAllocation Start="2015-10-28" End="2015-10-29" />
<TypeAllocation Start="2015-10-26" End="2015-10-27" />
</TypeAllocations>
</Type>
</Types>
</Block>
<Block>
<Ref/>
<BlockDates Start="2015-10-26" End="2015-10-30"/>
<Types>
<Type TypeCode="SG">
<TypeAllocations>
<TypeAllocation Start="2015-10-31" End="2015-11-01" />
<TypeAllocation Start="2015-10-25" End="2015-10-24" />
</TypeAllocations>
</Type>
<Type TypeCode="SG">
<TypeAllocations>
<TypeAllocation Start="2015-10-21" End="2015-10-25" />
<TypeAllocation Start="2015-10-23" End="2015-11-27" />
</TypeAllocations>
</Type>
</Types>
</Block>
</Blocks>
</ROOTNODE>
私は< TypeAllocation @startと@end >日付が< BlockDates @startと@end >日付の外にある場合に伝える方法を見つけようとしています。 <タイプアロケーション>エレメントと<タイプ>エレメントの任意の数があります。上記はすべての場合に失敗するはずです。以下は私が試みたものです。しかし、私はそれが最初のものだけを見つけるので、その道が離れていると感じます。どんな助けでも大歓迎です!Schematronの日付の比較
<sch:pattern name="Testing Start and End dates">
<sch:rule context="blk:InvBlock">
<sch:report test="translate(blk:InvBlockDates/@Start, '-', '') <= translate(blk:RoomTypes/blk:RoomType/blk:RoomTypeAllocations/blk:RoomTypeAllocation/@Start, '-', '') or translate(blk:InvBlockDates/@End, '-', '') <= translate(blk:RoomTypes/blk:RoomType/blk:RoomTypeAllocations/blk:RoomTypeAllocation/@End, '-', '')"> Allocation @Start and @End dates can not be outside the Block @Start and @End dates. </sch:report>
</sch:rule>
</sch:pattern>
こんにちはMartin、はいブロック内にAllocation開始日と終了日をすべて確認する必要があります。私はこれを使ってSchematron 1.5を使っていることを忘れていました。したがって、current()関数は機能していません。 – user1128792