我对XML Schema比较新,我遇到了一个问题。我知道,对于具有与之关联的属性的元素,它必须是复杂类型。但是我只能弄清楚如何将属性与空元素相关联(参见示例1)...是否可以将属性与非空元素相关联并为该元素声明一个类型(参见示例2)?我正在使用Visual Studio 2008编写模式...当我将元素声明为复杂类型时,它告诉我必须从元素中删除类型声明 - 请参阅下文。
示例1:
<phone units = "grams" />
示例2:
<phone units = "grams">92</phone>
Phone.XML
<?xml version="1.0" encoding="utf-8"?>
<phone xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="XSD.xsd">
<make>Nokia</make>
<model>N700</model>
<code>532/4329</code>
<weight units ="grams">92</weight>
<price>49.99</price>
</phone>
XSD.xsd
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:attribute name ="units" type ="xs:string" />
<xs:element name ="phone">
<xs:complexType>
<xs:sequence>
<xs:element name ="make" type="xs:string" />
<xs:element name ="model" type="xs:string" />
<xs:element name ="code" type="xs:string" />
<xs:element name ="weight" type="xs:string">
<xs:complexType>
<xs:attribute name="units" type="xs:string" />
</xs:complexType>
</xs:element>
<xs:element name ="price" type="xs:double" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
我还没有在网上找到一个证明这一点的例子。是否有可能或者我必须牺牲与称重元素相关的类型才能插入属性?
任何帮助都将非常感谢....谢谢......
答案 0 :(得分:2)
做这样的事情:
<xs:element name="weight" type="weightType">
</xs:element>
<xs:complexType name="weightType">
<xs:simpleContent>
<xs:extension base="xs:integer">
<xs:attribute name="units" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>