字符串'01 / 06/2015'不是有效的AllXsd值

时间:2016-05-13 12:22:15

标签: c# xml sorting xsd dataset

我收到此错误

  

字符串'01 / 06/2015'不是有效的AllXsd值

我的XSD是:

<xs:element name="PassingDate">
                <xs:simpleType>
                <xs:restriction base="xs:date">
                <xs:pattern value="\d{2}[/]\d{2}[/]\d{4}"></xs:pattern>
                </xs:restriction>
                </xs:simpleType>
                </xs:element>

我正在将我的XML读入DataSet,然后我必须在PassingDate的基础上执行排序

如果我现在将PassingDate转换为dataType日期,那么将仅基于字符串进行排序。这将导致错误的输出。

如何在dd/MM/yyyy格式化日期?

1 个答案:

答案 0 :(得分:2)

您的PassingDate声明并未重新排列日期的组成部分 - 它只会进一步限制原始位置的组件。

您可以切换到纯正则表达式约束以获得结束:

<xs:element name="PassingDate">
  <xs:simpleType name="date">
    <xs:restriction base="xs:token">
      <xs:pattern value="[0-3][0-9]/[0-1][0-9]/[0-9]{4}" />
    </xs:restriction>
  </xs:simpleType>
</xs:element>

备注:

  1. 这种方法并不能完全防止有太多天的无效日期 特定月份,闰/非闰年等。
  2. YYYY-MM-DD更适合国际交流。
  3. YYYY-MM-DD更适合互操作性
  4. YYYY-MM-DD更适合排序。
  5. 推荐:对您的XML使用标准type="xs:date",并仅对数据输入/显示的日期格式进行本地化。如果您坚持使用非标准日期格式的XML,请调查前/后处理或编写自定义代码。您可以从here获得一些想法。