2012-04-13 7 views
0

Ich habe grundlegende xsd erfolgreich erstellt, aber ich möchte eine Einschränkung für das Element hinzufügen, dass es vorhanden sein sollte und enthält mindestens ein Zeichen. Es hat auch 4 Attribute. Ich habe Probleme beim Hinzufügen von Einschränkungen, da ich keinen einfachen Typ verwenden kann, da das Element Attribute hat.wie man Validierung in xsd für Leerzeichen hinzufügen

Bitte legen nahe, etwas

Dank im Voraus

Added XSD Daten von OP in den Kommentaren (sic) geschrieben

<xs:element name="Engines"> 
    <xs:complexType> 
    <xs:sequence> 
     <xs:element maxOccurs="unbounded" ref="Engine" /> 
    </xs:sequence> 
    <xs:attribute name="Count" use="required" type="xs:integer" /> 
    </xs:complexType> 
</xs:element> 
<xs:element name="Engine"> 
    <xs:complexType> 
    <xs:sequence> 
     <xs:element name="Model" type="Model"/> 
     <xs:element ref="SerialNumber" /> 
    </xs:sequence> 
    </xs:complexType> 
</element> 

<xs:simpleType name="trimValueType"> 
    <xs:restriction base="xs:string"> 
    <xs:minLength value="1"></xs:minLength> 
    <xs:whiteSpace value="collapse"></xs:whiteSpace> 
    </xs:restriction> 
</xs:simpleType> 
<xs:complexTyp‌​e name="Model"> 
    <xs:simpleContent> 
    <xs:extension base="trimValueType"> 
     <xs:attribute name="ATTRIBUTE" use="required" /> 
    </xs:extension> 
    </xs:simpleContent> 
</xs:complexType> 


<Engines count = 1> <Engine> <Model ATTRIBUTE = "r\w"> </Model> <SerialNumber ATTRIBUTE = "r/w">1234567</SerialNumber> <Engine> <Engines> 

Antwort

1

Sie müssen zuerst eine einfache Art erstellen, die XSD einschränkt: Zeichenfolge, um Ihre Textbeschränkungen anzugeben. Dann müssen Sie einen komplexen Typ mit einem einfachen Inhalt definieren, der den einfachen Typ, den Sie gerade erstellt haben, um die gewünschten Attribute erweitert. Ich habe eine Whitespace-Einschränkung eingefügt, die genau zu Ihrem Titel passt, auch wenn Sie in Ihrer Problembeschreibung nicht ausdrücklich erwähnt werden.

<?xml version="1.0" encoding="utf-8" ?> 
<xsd:schema targetNamespace="http://tempuri.org/XMLSchema.xsd" elementFormDefault="qualified" xmlns="http://tempuri.org/XMLSchema.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <xsd:simpleType name="one"> 
     <xsd:restriction base="xsd:string"> 
      <xsd:whiteSpace value="collapse"/> 
      <xsd:minLength value="1"/> 
     </xsd:restriction> 
    </xsd:simpleType> 
    <xsd:complexType name="two"> 
     <xsd:simpleContent> 
      <xsd:extension base="one"> 
       <xsd:attribute name="one"/> 
       <xsd:attribute name="two"/> 
       <xsd:attribute name="etc"/> 
      </xsd:extension> 
     </xsd:simpleContent> 
    </xsd:complexType> 
    <xsd:element name="root" type="two"/> 
</xsd:schema> 

XML-Beispiel:

<?xml version="1.0" encoding="utf-8" standalone="yes"?> 
<!-- Sample XML generated by QTAssistant (http://www.paschidev.com) --> 
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" one="anySimpleType" two="anySimpleType" etc="anySimpleType" xmlns="http://tempuri.org/XMLSchema.xsd">root1</root> 
+0

ich dies und bekommen Ausnahme versucht haben - Für den Inhalt der Elemente müssen von wohlgeformten Zeichendaten oder Markup bestehen. –

+0

@Shashank, was hast du probiert und wie (wie in welchem ​​Tool hast du es benutzt)? Können Sie den XML-Code posten, den Sie ausprobiert haben? Ich habe gerade den Beitrag mit einem XML-Beispiel aktualisiert, das validiert. –

+0

Ich validiere das XML, das mit deinem Vorschlag erstellt wurde, mit Hilfe von Java SAXParser. Es wird korrekt validiert, wenn der Elementwert leer oder Leerzeichen ist. Das System gibt jedoch eine Ausnahme am Ende des Dokuments aus, wie cvc-complex-type.2.2: Das Element 'RecordTransferFile' darf kein Element [children] haben und der Wert muss gültig sein. –