Я относительно новичок в XML-схемах и столкнулся с проблемой. Я знаю, что для элемента, с которым связан атрибут, это должен быть сложный тип. Однако я могу только выяснить, как связать атрибут с пустым элементом (см. Пример 1) ... возможно ли связать атрибут с непустым elemnet и иметь тип, объявленный для этого элемента (см. Пример 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>
Мне еще предстоит найти пример в сети, демонстрирующий это. Возможно ли это, или я должен пожертвовать типом, связанным с элементом взвешивания, чтобы вставить атрибут?
Любая помощь будет высоко ценится .... Спасибо ....