我有一个XML元素
height: 96px
使用自定义日期类型元素
<ManufactureDate>20150316</ManufactureDate>
用于验证,但现在我希望另一个元素具有相同的<xs:simpleType name="CustomDate">
<xs:restriction base="xs:string">
<xs:maxLength value="8"/>
<xs:whiteSpace value="collapse"/>
<xs:pattern value="\d*"/>
</xs:restriction>
/xs:simpleType>
数据类型,但是给出一个带有时间的输入,如下所示
CustomDate
有谁知道如何更改<ExpirationDate>20150316T15:53:00</ExpirationDate>
以接受这两种格式?
答案 0 :(得分:1)
一种可能的方法是根据您的simpleType
类型定义为自定义日期创建另一个CustomDate
:
<xs:simpleType name="CustomDateTime">
<xs:restriction base="xs:string">
<xs:maxLength value="17"/>
<xs:whiteSpace value="collapse"/>
<xs:pattern value="\d*T\d\d:\d\d:\d\d"/>
</xs:restriction>
</xs:simpleType>
然后您可以使用xs:union
接受两种自定义类型,例如:
<xs:simpleType name="CustomDateOrDateTime">
<xs:union memberTypes="CustomDate CustomDateTime"/>
</xs:simpleType>
您可以采取其他几种方法,例如,更改正则表达式模式以接受日期与时间和没有时间。虽然,我不知道确切的要求,即是否可以改变maxLength
限制,等等。
答案 1 :(得分:1)
我喜欢@ har07的想法使用<div class="box box-default">
<div class="box-header with-border">
<h3 class="box-title">
<i class="{{ $icon_classes }}"></i> {{ $box_title }}
</h3>
</div><!-- /.box-header -->
<div class="box-body">
<div class="row">
@include('includes.global.pie_chart', $browser_usage_pie_chart_options)
</div><!-- /.row -->
</div><!-- /.box-body -->
@if($box_footer_text)
<div class="box-footer text-center">
<a href="javascript::;" class="uppercase">{{ $box_footer_text }}</a>
</div><!-- /.box-footer -->
@endif
</div><!-- /.box -->
,但如果您真的想直接修改现有的xs:union
以接受可选的时间组件,则可以使用:
CustomDate
请注意,这些基于正则表达式的约束仅在词汇上接近日期和时间数据类型。例如,<xs:simpleType name="CustomDate">
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:pattern value="\d{8}(T\d\d(:\d\d){2})?"/>
</xs:restriction>
</xs:simpleType>
禁止大于12的月份,这些模式会接受它们。
答案 2 :(得分:0)
感谢所有回复。我可以通过改变模式来解决这个问题。
我刚使用<xs:pattern value="(\d*)|(\d*T\d{2}:\d{2}:\d{2})"/>
来使其发挥作用。
谢谢
答案 3 :(得分:0)
作为@ har07提出的解决方案的补充,我将提出以下建议:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified"
elementFormDefault="qualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xml:lang="DA">
<xs:element name="myDateTime" type="CustomDateTime" />
<xs:simpleType name="DateType">
<xs:restriction base="xs:date" >
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="DateTimeType">
<xs:restriction base="xs:dateTime" >
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="CustomDateTime">
<xs:union memberTypes="DateType DateTimeType"/>
</xs:simpleType>
</xs:schema>
它使用标准的XSD date和dateTime格式,我怀疑这将是最标准的做法,而不是发明一种新格式。我什至认为这应该可行:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified"
elementFormDefault="qualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xml:lang="DA">
<xs:element name="SlutDato" type="CustomDateTime" />
<xs:simpleType name="CustomDateTime">
<xs:union memberTypes="xs:dateTime xs:date"/>
</xs:simpleType>
</xs:schema>