Как написать XML-схему, для которой этот XML-документ является допустимым экземпляром? - PullRequest
1 голос
/ 19 февраля 2010
<Unit Number="1">
 <Identifier Type="ABC" Text="STO0001"/>
 <Identifier Type="DEF" Text="Some Value"/>
 <Identifier Type="GHI" Text="20070805"/>
 <Disposition Unit="Accept"/>
</Unit>

Мне нужно проверить, что Type = "DEF" Text = "Some Value" не пусто

что-то вроде:

<xs:complexType name="requiredValue" abstract="true"/>

<xs:complexType name="Identifier">
    <xs:complexContent>
        <xs:extension base="requiredValue">
            <xs:attribute name="Type" use="required" fixed="DEF"/>
            <xs:attribute name="Text" type="NonEmptyString"/>
        </xs:extension>
    </xs:complexContent>
</xs:complexType>

Ответы [ 2 ]

1 голос
/ 03 марта 2010

Это не совсем то, что вам нужно, но это может помочь вам выполнить основную часть схемы.

Это позволяет загрузить файл XML и создать схему xsd или DTD.

http://www.hitsw.com/xml_utilites/

Это делает то же самое.

http://www.flame-ware.com/products/xml-2-xsd/Default.aspx

Павел упомянул Schematron. Чтобы помочь построить эти схемы, вы можете использовать pyang.

http://code.google.com/p/pyang/
0 голосов
/ 19 февраля 2010

Использование ограничения xsd: minLength:

<xsd:attribute name="Type">
  <xsd:simpleType>
    <xsd:restriction base="xsd:string">
      <xsd:minLength value="1"/>
    </xsd:restriction>
  </xsd:simpleType>
</xsd:element>
...