xml – XSD:将属性添加到强类型的“简单”元素
有一些明智的方式来使用强类型的简单类型和属性的元素?
好的,我有一个XSD模式,它有一个百万(呃,百)元素可能是这样的: <xsd:element name="DocumentDescription" type="xsd:string" /> <xsd:element name="DocumentDateTime" type="xsd:dateTime" /> <xsd:element name="DocumentSize" type="xsd:int" /> 这是花花公子但是,我真的希望所有这些元素也有一些常见的属性,比如说,“格式”和“isVisible”.即具有如下所示的模式: <DocumentDescription isVisible="true">doc description</DocumentDescription> <DocumentDateTime format="dd/mm/yyyy" isVisible="true">1/1/2008</DocumentDescription> <DocumentSize format="0.00 KB" isVisible="false">5403</DocumentSize> 我可以手动执行,可怕的是,当我生成它时,将所有这样的属性添加到XSD,这样的东西: <xsd:element name="DocumentDescription" /> <xsd:complexType> <xsd:simpleContent> <xsd:extension base="xsd:string"> <xsd:attribute name="format" type="xsd:string" /> <xsd:attribute name="isVisible" type="xsd:boolean" /> </xsd:extension> </xsd:simpleContent> </xsd:complexType> <xsd:element name="DocumentDateTime" /> ... etc …但是在一个理想的世界中,我宁愿把它定义为一个复杂的类型: <xsd:complexType name="customType"> <xsd:complexContent> <xsd:extension base="???"> <xsd:attribute name="format" type="xsd:string" /> <xsd:attribute name="isVisible" type="xsd:boolean" /> 这意味着我可以做: <xsd:element name="DocumentDescription" type="customType" baseType="xsd:string" /> <xsd:element name="DocumentDateTime" type="customType" baseType="xsd:dateTime" /> <xsd:element name="DocumentSize" type="customType" baseType="xsd:int" /> 我的“理想世界”代码的问题是: a)我没有有效的< xsd:extension base - “???”> ;,因为我真的不在乎我在扩展什么;我想扩展所有类型.似乎像“xsd:anyType”是适当的,但是那个元素是不是弱类型的容器呢? b)我不能再指定< xsd:element>上的简单类型,因为现在该类型是我定义的复杂的“customType”.因此,我放在那里的虚构的“baseType”属性 那么我可以用非笨重的方法为简单类型添加属性吗?或者我需要定义十几个完全相同的complexTypes,除了它们扩展的简单类型? 强类型的元素不仅可以更加明了地描述数据,而且在Excel中使用它们进行XML映射(这是这些东西的全部目的)时,强类型意味着Excel会根据类型正确设置单元格格式. 我可能看着这一切都错了!任何建议赞赏.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |