Estoy tratando de agregar la validación de schematron a mi xsd. Este es mi nuevo xsd:validación de xsd con 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>
Esta es mi prueba xml:
<books>
<book publisher="ddd" on-loan="sdsd">
<title>idan title</title>
<author>idan author</author>
<publication-date>idan date</publication-date>
</book>
</books>
Usando el xml I, siempre que no entiendo error de validación.
Supuse que obtendría el mensaje "Todos los libros que están en préstamo deben tener una fecha de devolución" Y que el xml no será válido. Sugerencias sobre por qué?
Actualización Me las arreglé para hacerlo funcionar usando la validación de schematron en el editor xml de xXgen. Sin embargo, ¿cómo se supone que debo usar en mi código? ¿Debo instalar algo especial? enlace a otra biblioteca?
Update2 Al parecer here en la sección "Tratamiento", todos los pasos necesarios se detallan.