0

現在の日付に対して XSD の日付と時刻のデータ型を制限することは可能ですか? たとえば、日付の maxInclusive を現在の日付に設定する場合:

<xs:element name="DateOfBirths" type="birthsDate"/>    
 <xs:simpleType name="birthsDate">
  <xs:restriction base="xs:date">
   <xs:minInclusive value="1920-01-01"/>
   <xs:maxInclusive value="current-date()" fixed="true"/>
  </xs:restriction>
 </xs:simpleType>

これがデフォルトでは不可能な場合、回避策はありますか? どんな助けでも大歓迎です。

4

1 に答える 1

1

XSD は、ファセット値の設定における XPath 関数の呼び出しをサポートしていないため、(おそらく既にご存じのとおり) 問題のコードは機能しません。

最も明白な回避策は次のとおりです。

  • XSD 1.1 を使用し、アサーションで制約を確認します。
  • Schematron を使用して、アサーションの制約を確認してください。
  • アプリケーション レベルでの制約を確認してください。
  • birthDate 型の宣言を独自のスキーマ ドキュメントに移動します。手動で、または cron ジョブなどを使用して、そのスキーマ ドキュメントの新しいバージョンを定期的に生成します。今日生成されたスキーマ ドキュメントは、

    <xs:maxInclusive value="2013-06-20"/>
    

    そして明日生成されるスキーマ文書は

    <xs:maxInclusive value="2013-06-21"/>
    
于 2013-06-20T20:13:57.387 に答える