2016-05-09 9 views
0

ich eine XML-Einheit wie diese haben,Schemavalidierung von XHTML Feld

a:news-article xmlns:c="http://abc/core" xmlns:f="http://abc/fields" xmlns:a="http://abc/assets" xmlns:r="http://abc/refdata"> 
    <c:id>xyz</c:id> 
    <c:type>asset</c:type> 
    <c:created-on>2016-03-17T08:26:27.764Z</c:created-on> 
    <c:released-on>1985-11-03T00:00:00Z</c:released-on> 
    <c:expires-on>2009-12-12T00:00:00Z</c:expires-on> 
    <f:short-headline> 
    <c:content><c:l10n xml:lang="en"> 
    <p> 
     Carbide technology for South Korean project 
    </p> 
     </c:l10n></c:content> 
    <c:resources/> 
    </f:short-headline> 
</a:news-article> 

In diesem XML, ist ein XHTML-Feld. Ich muss solche XHTML-Felder mithilfe der Schema-Validierung validieren. d. h., wenn ich einen leeren Wert zur Verfügung stellte, sollte es einen Schemavalidierungsfehler auslösen.

Antwort

1

Sie benötigen separate Schemas für jeden Namespace.

Im XSD für die „http://abc/core“ Namespace Sie ein Muster, wenn der Inhalt eines Elements überprüfen möchten vielleicht nicht leer ist:

<xs:element name="id"> 
      <xs:simpleType> 
       <xs:restriction base="xs:string"> 
        <xs:pattern value="\S+"/> 
       </xs:restriction> 
      </xs:simpleType> 
    </xs:element> 

Sie dann das Schema in die „root“ importieren müssen Schema (in Ihrem Beispiel nehme ich an "a:" Präfix steht für das Stamm Schema) wie folgt aus:

<xs:import namespace="http://abc/core" 

schema = "core.xsd" />

und schließlich verweisen die Element aus einem fremden Namensraum an der richtigen Stelle:

<xs:element name="authors"> 
     <xs:complexType> 
      <xs:sequence>news-article 
      <xs:element ref="c:id"/> 
      <xs:element ref="c:type"/> 
      <!-- ... --> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 

Wenn Sie sicherstellen möchten, dass die p Element nicht leer Sie ein Schema der eigenen schreiben müssen, nach dem gleichen Muster wie oben - festzustellen, die nicht -leere Muster für und verweisen Sie darauf im Schema für c:l10n Element.