Xsd 如何在XML模式中将非字符串元素声明为具有可选内容
我已经看到了,但是我有一个元素,它是xs:dateTime 我试图为其编写架构的文档如下所示:Xsd 如何在XML模式中将非字符串元素声明为具有可选内容,xsd,Xsd,我已经看到了,但是我有一个元素,它是xs:dateTime 我试图为其编写架构的文档如下所示: <web-campaigns> <web-campaign> <id>1231</id> <start-at nil="true"/> </web-campaign> <web-campaign> <id>1232</id> <start-at&
<web-campaigns>
<web-campaign>
<id>1231</id>
<start-at nil="true"/>
</web-campaign>
<web-campaign>
<id>1232</id>
<start-at>2009-08-08T09:00:00Z</start-at>
</web-campaign>
</web-campaigns>
1231
1232
2009-08-08T09:00:00Z
有时xs:dateTime元素有内容,有时没有
到目前为止,我得到的(尚未验证)是:
如果我用xs:string替换xs:dateTime,我可以很好地验证文档,但我确实需要一个xs:dateTime,以向消费者指示该元素中包含什么。我也尝试过使用/不使用mixed=“true”,但没有效果
如果有区别,我将使用xmllint(在Mac OS X 10.5上)和您需要的
<xs:element name="start-at" minOccurs="0">
混合模式与您的情况无关,您不需要它。默认情况下,minOccurs=“1”
,即该元素是必需的
使用minOccurs=“0”,可以指定包含内容的元素,也可以根本不指定。如果希望能够允许
,则不能使用xs:dateTime。您需要
<xs:element name="start-at" minOccurs="0">
混合模式与您的情况无关,您不需要它。默认情况下,minOccurs=“1”
,即该元素是必需的
使用minOccurs=“0”,可以指定包含内容的元素,也可以根本不指定。如果希望能够允许
,则不能使用xs:dateTime。您可以将自己的类型定义为类型的并集
1/将“empty”类型定义为只允许“ähm nothing:”的字符串
2/接下来定义一个允许日期和空的类型
<xs:simpleType name="empty-dateTime">
<xs:union memberTypes="xs:dateTime empty"/>
</xs:simpleType>
3/将所有可为空的日期时间元素声明为
type=“empty datetime”
您可以将自己的类型定义为类型的联合
1/将“empty”类型定义为只允许“ähm nothing:”的字符串
2/接下来定义一个允许日期和空的类型
<xs:simpleType name="empty-dateTime">
<xs:union memberTypes="xs:dateTime empty"/>
</xs:simpleType>
3/将所有可为空的日期时间元素声明为type=“empty datetime”