J'essaie d'ajouter une validation schematron à mon xsd. Ceci est mon nouveau xsd:validation xsd en utilisant schematron
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
xmlns:sch="http://www.ascc.net/xml/schematron"
elementFormDefault="qualified" >
<xs:element name="books">
<xs:complextype>
<xs:sequence> ;P
<xs:element name="book" type="bookType" maxoccurs="unbounded">
<xs:annotation>
<xs:appinfo>
<sch:pattern id="onLoanTests" xmlns:sch="http://purl.oclc.org/dsdl/schematron">
<sch:rule context="book">
<sch:report test="@on-loan and not(@return-date)">
Every book that is on loan must have a return date
</sch:report>
</sch:rule>
</sch:pattern>
</xs:appinfo>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complextype>
</xs:element>
<xs:complextype name="bookType">
<xs:sequence>
<xs:element name="title" type="xs:string" />
<xs:element name="author" type="xs:string" />
<xs:element name="publication-date" type="xs:string" />
</xs:sequence>
<xs:attribute name="publisher" type="xs:string" use="required" />
<xs:attribute name="on-loan" type="xs:string" use="required" />
<xs:attribute name="return-date" type="xs:string" use="optional" />
</xs:complextype>
</xs:schema>
Ceci est mon xml test:
<books>
<book publisher="ddd" on-loan="sdsd">
<title>idan title</title>
<author>idan author</author>
<publication-date>idan date</publication-date>
</book>
</books>
Utilisation du xml I à condition que je ne reçois pas d'erreur de validation.
J'ai supposé que j'obtiendrais le message "Chaque livre qui est prêté doit avoir une date de retour" Et que le xml ne sera pas valide. Suggestions sur pourquoi?
Mise à jour J'ai réussi à le faire fonctionner en utilisant la validation schematron dans l'éditeur xml d'oXygen. Cependant, comment dois-je l'utiliser dans mon code? Dois-je installer quelque chose de spécial? lien vers une autre bibliothèque?
Update2 Apparemment here dans la section "Traitement", toutes les étapes nécessaires sont détaillées.