我是xsd的新手。我正在尝试创建一个xsd,以便我的xml应该采用以下方式..
<Info>
<Val name="n_1">A</Val>
<Val name="n_2">123</Val>
<Val name="n_3">2012-05-05T00:00:00</Val>
</Info>
我创建的xsd是这样的..
<xs:element name="Info">
<xs:complexType>
<xs:sequence>
<xs:element name="n_1" type="xs:string"/>
<xs:element name="n_2" type="xs:integer"/>
<xs:element name="n_3" type="xs:dateTime"/>
</xs:sequence>
</xs:complexType>
</xs:element>
这显然没有帮助满足我的要求..但是在这个时候我很惊讶一件事......如何创建3个元素“val”,其属性值不同......即使我做到了不知何故,我会得到列表错误列表..我该如何管理呢?
我实际上正在编写这个xsd,以便我在excel中的数据可以转换为xml .. 要添加一些关于我的excel的内容,一行是一组,其中一列是Info(最糟糕的是:|因为我有一个Info的3个Val)...
我最初认为这个xml错了,但我错了..它是一个标准输出/输入xml ..
任何帮助实现这一目标都是值得的。
提前致谢.. :))
答案 0 :(得分:1)
XSD应该是这样的:
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Info">
<xs:complexType>
<xs:sequence>
<xs:element name="Val" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="name">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="n_1"/>
<xs:enumeration value="n_2"/>
<xs:enumeration value="n_3"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
它声明了一个元素Info
,其中包含子元素Val
的列表。每个元素Val
都包含字符串值(<xs:simpleContent>
和<xs:extension base="xs:string">
),以及name
属性,该属性只有三个可能的值n_1
,{{1 }和n_2
。
根据您的具体要求,您可以使用n_3
内容的类型 - 例如,指定具有特定最大长度的字符串。同样,您可以更改Val
属性值的限制(或没有限制)
答案 1 :(得分:1)
试试这个XSD.This强制Val节点的“ name ”属性的唯一性。
<?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Info" >
<xs:complexType>
<xs:sequence>
<xs:element name="Val" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent >
<xs:extension base="xs:anySimpleType">
<xs:attribute name="name" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:unique name="uniqueNameForValList">
<xs:selector xpath="Val" />
<xs:field xpath="@name" />
</xs:unique>
</xs:element>
答案 2 :(得分:0)
试试这个XSD
<?xml version="1.0"?>
<xs:schema id="Info" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="Info" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="Val" nillable="true">
<xs:complexType>
<xs:simpleContent msdata:ColumnName="Val_Text" msdata:Ordinal="1">
<xs:extension base="xs:string">
<xs:attribute name="name" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>