2012-04-20 2 views
-1

Я новичок в xsd. Я пытаюсь создать XSD, так что мой XML должен быть следующим образом ..Нужна помощь в создании xsd

<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 (самое худшее приходит сюда: | поскольку у меня есть 3 Вал для одного Info) ...

первоначально я думал, что это XML неправильно, но я был неправ .. это стандартный выход/вход XML ..

Любая помощь в достижении этой цели будет заметнее.

Заранее спасибо .. :)

+0

редактировал вопрос в соответствии с изменением требований .. Для того, чтобы быть конкретным, я изменил тип значений атрибутов из строки в DATETIME и т.д .. – NoviceCoder

+0

Пожалуйста продумывать, что фактическая и задавать вопрос, который четко излагает это. Вы начали с (по-видимому) что-то, и теперь у вас есть что-то другое. – MiMo

+0

Извините, мое требование изменилось сегодня, и я не знал об этом во время размещения вопроса. Чрезвычайно извиняюсь за это. И я очень ценю ваши усилия в решении моего вопроса. Merci Beaucoup Monsieur :) – NoviceCoder

ответ

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> 

+0

Спасибо, куча ... Я попробую это и вернусь к вам ..: D – NoviceCoder

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,, и n_3.

В зависимости от ваших требований вы можете играть с типом содержимого Val - укажите, что это строка с определенной максимальной длиной, например. Точно так же вы можете изменить ограничения на значения атрибута name (или не имеют каких-либо ограничений)

+0

Спасибо, тонна ... Я попробую это и вернусь к вам ..: D – NoviceCoder

+0

эй, когда я пишу эти строки в визуальной студии, говорится, что complexType в строке 5 не поддерживается в этом контексте.Кроме того, я не могу импортировать xsd в качестве источника для excel-листа. Спасибо в любом случае :) – NoviceCoder

+0

Mhh ... Я написал XSD в Visual Studio, и я попробовал его с помощью Excel, возможно, есть проблема с вашим Пространство имен? Я обновляю ответ, чтобы включить полный XSD, включая пространства имен. – MiMo

1

Попробуйте XSD.This навязывает уникальность «имя» атрибут узлов Val.

<?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> 

+0

Спасибо большое .. Я попробую это и вернитесь к вам ..: d – NoviceCoder

+0

Эй, где я могу указать имена атрибутов n_1, n_2, n_3, и я тоже могу изменить их типы. Возможно, это строка, а другая может быть dateTime .. Пожалуйста, дайте мне знать, как можно Я достигаю этого .. pardon Если я прошу основные вещи, но я только начал создавать xsd .. Спасибо в любом случае :) – NoviceCoder

+0

Пожалуйста, сделайте правильную инструкцию. Вы хотите, чтобы тип атрибута был строковым/dateTime или содержимым в пределах узла Val быть другого типа –

Смежные вопросы