XSD可选条件
很抱歉,如果这是简单的或已经回答的地方-我找不到任何有用的搜索词,我尝试 我有一些日期输入,我想在条件级联中进行,如下所示:XSD可选条件,xsd,conditional,optional,Xsd,Conditional,Optional,很抱歉,如果这是简单的或已经回答的地方-我找不到任何有用的搜索词,我尝试 我有一些日期输入,我想在条件级联中进行,如下所示: 整个日期以ISO格式排列-YYYY-MM-DD 月份和日期可能包含“非法”值,尤其是零或2月30日 关键字(以及该职位的原因),如果有月份,则必须有年份;如果有日期,则必须有月份和年份。因此,有效的日期可能是“YYYY”或“YYYY-MM”或“YYYY-MM-DD”。到目前为止,我所拥有的只是一个检查单个元素的简单规范,而不是我所描述的连接计划。这在XSD中是可能的吗 &
<xs:element name='DatumOd' minOccurs='0' maxOccurs='1'>
<xs:simpleType>
<xs:restriction base='xs:string'>
<xs:minLength value='4'/>
<xs:maxLength value='10'/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name='RokStary' minOccurs='0' maxOccurs='1'>
<xs:simpleType>
<xs:restriction base='xs:short'>
<xs:minInclusive value='700' />
<xs:maxInclusive value='2013' />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name='MesicStary' minOccurs='0' maxOccurs='1'>
<xs:simpleType>
<xs:restriction base='xs:byte'>
<xs:minInclusive value='0' />
<xs:maxInclusive value='12' />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name='DenStary' minOccurs='0' maxOccurs='1'>
<xs:simpleType>
<xs:restriction base='xs:byte'>
<xs:minInclusive value='0' />
<xs:maxInclusive value='31' />
</xs:restriction>
</xs:simpleType>
</xs:element>
<?xml version='1.0' encoding='UTF-8'?>
<dataroot>
<DSXML SeqNum='1' ID='92491'>
<TypZaznamu>Z</TypZaznamu>
<Rad>RO</Rad>
<Druh>Spermophilus citellus</Druh>
<CharVyskyt>0</CharVyskyt>
<DatumOd>1894</DatumOd>
<Katastr>Habartice</Katastr>
<Kvadrat>4956</Kvadrat>
<Oblast>Frydlantska pahorkatina</Oblast>
<Zdroj>(Wurm 1894, Wiesbaur 1894)</Zdroj>
<Pocet>0</Pocet>
<Elevation>240</Elevation>
<Zapsano>06/24/98</Zapsano>
<Zapsal>M.A.</Zapsal>
<Poznamka>(Ebersdorf)</Poznamka>
<Okres>LI</Okres>
<Region>SC</Region>
</DSXML>
<DSXML SeqNum='2' ID='92591'>
<TypZaznamu>Z</TypZaznamu>
<Rad>RO</Rad>
<Druh>Spermophilus citellus</Druh>
<CharVyskyt>0</CharVyskyt>
<DatumOd>1894-09</DatumOd>
<Katastr>Habartice</Katastr>
<Kvadrat>4956</Kvadrat>
<Oblast>Frydlantska pahorkatina</Oblast>
<Zdroj>(Wurm 1894, Wiesbaur 1894)</Zdroj>
<Pocet>0</Pocet>
<Elevation>240</Elevation>
<Zapsano>06/24/98</Zapsano>
<Zapsal>M.A.</Zapsal>
<Poznamka>(Ebersdorf)</Poznamka>
<Okres>LI</Okres>
<Region>SC</Region>
</DSXML>
<DSXML SeqNum='3' ID='93491'>
<TypZaznamu>Z</TypZaznamu>
<Rad>RO</Rad>
<Druh>Spermophilus citellus</Druh>
<CharVyskyt>0</CharVyskyt>
<DatumOd>1894-03-22</DatumOd>
<Katastr>Habartice</Katastr>
<Kvadrat>4956</Kvadrat>
<Oblast>Frydlantska pahorkatina</Oblast>
<Zdroj>(Wurm 1894, Wiesbaur 1894)</Zdroj>
<Pocet>0</Pocet>
<Elevation>240</Elevation>
<Zapsano>06/24/98</Zapsano>
<Zapsal>M.A.</Zapsal>
<Poznamka>(Ebersdorf)</Poznamka>
<Okres>LI</Okres>
<Region>SC</Region>
</DSXML>
<DSXML SeqNum='4' ID='9418'>
<TypZaznamu>Z</TypZaznamu>
<Rad>CA</Rad>
<Druh>Neovison vison</Druh>
<CharVyskyt>2</CharVyskyt>
<RokStary>1991</RokStary>
<MesicStary>01</MesicStary>
<DenStary>19</DenStary>
<Katastr>Cernousy</Katastr>
<Kvadrat>4956</Kvadrat>
<Oblast>Frydlantska pahorkatina</Oblast>
<Zdroj>(Andera & Hanzal 1996)</Zdroj>
<Pocet>0</Pocet>
<Elevation>260</Elevation>
<Zapsano>03/10/99</Zapsano>
<Zapsal>M.A.</Zapsal>
<Okres>LI</Okres>
<Region>SC</Region>
</DSXML>
<DSXML SeqNum='5' ID='94174'>
<TypZaznamu>Z</TypZaznamu>
<Rad>CA</Rad>
<Druh>Neovison vison</Druh>
<CharVyskyt>2</CharVyskyt>
<RokStary>1991</RokStary>
<Katastr>Habartice</Katastr>
<Kvadrat>4956</Kvadrat>
<Oblast>Frydlantska pahorkatina</Oblast>
<Zdroj>(Andera & Hanzal 1996)</Zdroj>
<Pocet>0</Pocet>
<Elevation>240</Elevation>
<Zapsano>03/10/99</Zapsano>
<Zapsal>M.A.</Zapsal>
<Okres>LI</Okres>
<Region>SÈ</Region>
</DSXML>
<DSXML SeqNum='6' ID='94660'>
<TypZaznamu>Z</TypZaznamu>
<Rad>RO</Rad>
<Druh>Apodemus agrarius</Druh>
<CharVyskyt>4</CharVyskyt>
<RokStary>1991</RokStary>
<MesicStary>05</MesicStary>
<Katastr>Cernousy</Katastr>
<Kvadrat>4956</Kvadrat>
<Oblast>Frydlantska pahorkatina</Oblast>
<Zdroj>(Barta Z. & Benda 1998)</Zdroj>
<Pocet>9</Pocet>
<Elevation>260</Elevation>
<Zapsano>05/06/99</Zapsano>
<Zapsal>M.A.</Zapsal>
<Okres>LI</Okres>
<Region>SC</Region>
</DSXML>
</dataroot>
Z
反渗透
黄鼠嗜精细胞
0
1894
哈巴特
4956
Frydlantska pahorkatina
(伍尔姆1894,威斯堡1894)
0
240
06/24/98
文学硕士。
(埃伯斯多夫)
锂
联合国安全理事会
Z
反渗透
黄鼠嗜精细胞
0
1894-09
哈巴特
4956
Frydlantska pahorkatina
(伍尔姆1894,威斯堡1894)
0
240
06/24/98
文学硕士。
(埃伯斯多夫)
锂
联合国安全理事会
Z
反渗透
黄鼠嗜精细胞
0
1894-03-22
哈巴特
4956
Frydlantska pahorkatina
(伍尔姆1894,威斯堡1894)
0
240
06/24/98
文学硕士。
(埃伯斯多夫)
锂
联合国安全理事会
Z
加利福尼亚州
新面貌
2.
1991
01
19
阉割
4956
Frydlantska pahorkatina
(安德拉和汉扎尔,1996年)
0
260
03/10/99
文学硕士。
锂
联合国安全理事会
Z
加利福尼亚州
新面貌
2.
1991
哈巴特
4956
Frydlantska pahorkatina
(安德拉和汉扎尔,1996年)
0
240
03/10/99
文学硕士。
锂
SÈ
Z
反渗透
黑线姬鼠
4.
1991
05
阉割
4956
Frydlantska pahorkatina
(Barta Z.和Benda 1998)
9
260
05/06/99
文学硕士。
锂
联合国安全理事会
假设示例输入xml:
<root>
<datevalue>2013-05-29</datevalue>
</root>
既然你说可能存在潜在的非现实价值,我们就不得不接受它。。我还有另外一种方法,它的代码非常简单:
<xs:element name="root">
<xs:complexType>
<xs:element name='datevalue' minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[0-2][0-9][0-9][0-9]
|[0-2][0-9][0-9][0-9][-][0-1][0-9]
|[0-2][0-9][0-9][0-9][-][0-1][0-9][-][0-3][0-9]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:complexType>
</xs:element>
你只可以把regex变得更详细,而忽略你正遇到问题的个案,例如“20[0[0-0-1][0-1][0-1][0-9[0-1][0-1[0-1[0-1[0-1[0-1][0-1[0-1][0-1[0-1][0-1[0-1][0-1[0-1[0-1[0-1][0-1[0-1[0-1[0-1[0-1[0-1[0-1[0-1[0-1[0-1[0-1[0-1[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]-0[1-9]-3[0-1]“我只是翻了翻一些旧帖子,发现了这个,我当时没有回答。所以,很多年过去了,但还是谢谢你。这种“或”的模式正是我需要的。
0000 to 2999
or 0000-01 to 2999-12
or 0000-01-01 to 2999-12-31
<xs:element name="root">
<xs:complexType>
<xs:element name='datevalue' minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[0-2][0-9][0-9][0-9]
|[0-2][0-9][0-9][0-9][-][0-1][0-9]
|[0-2][0-9][0-9][0-9][-][0-1][0-9][-][0-3][0-9]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:complexType>
</xs:element>
0000 to 2999
or 0000-00 to 2999-12 (to 2999-19)
or 0000-00-00 to 2999-12-31 (to 2999-19-39)