Различные проверки для одного и того же имени элемента в XSD - PullRequest
0 голосов
/ 24 ноября 2011

У меня есть XML-файл, подобный этому:

<myNode>
   <myProperty name="Title" value="MyTitle" />
   <myProperty name="ProductId" value="123456" />
</myNode>

Можно ли написать XSD для проверки того, что первое свойство ("Title") должно быть строкой, а второе свойство ("ProductId") должно быть целым числом?

Ответы [ 2 ]

0 голосов
/ 25 ноября 2011

К сожалению, вы не можете этого сделать.XSD для вашего XML выглядит следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema 
    attributeFormDefault="unqualified"
    elementFormDefault="qualified" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="myNode">
    <xs:complexType>
      <xs:sequence>

        <xs:element maxOccurs="unbounded" name="myProperty">
          <xs:complexType>
            <xs:attribute name="name" type="xs:string" use="required" />
            <xs:attribute name="value" type="xs:string" use="required" />
          </xs:complexType>
        </xs:element>

      </xs:sequence>
    </xs:complexType>
  </xs:element>

</xs:schema>

Чтобы решить вашу проблему, вы можете создать XSD для следующего XML:

<myNode>
    <Properties>
       <Title value="MyTitle" />
       <ProductId value="123456" />
    </Properties>
</myNode>
0 голосов
/ 24 ноября 2011

Нет, вы не можете сделать это с XSD.Посмотрите, может ли http://www.schematron.com/ помочь вам в этом.

...