Changeset 4623
- Timestamp:
- 03/05/14 17:46:50 (10 years ago)
- Location:
- ComponentRegistry/trunk/CMDValidate
- Files:
-
- 1 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
ComponentRegistry/trunk/CMDValidate/pom.xml
r2011 r4623 44 44 <groupId>net.sf.saxon</groupId> 45 45 <artifactId>Saxon-HE</artifactId> 46 <version>9. 4</version>46 <version>9.5.1-4</version> 47 47 </dependency> 48 48 <dependency> -
ComponentRegistry/trunk/CMDValidate/src/test/java/clarin/cmdi/schema/cmd/TestCMDValidate.java
r4524 r4623 172 172 } 173 173 174 @Test 175 public void invalid_10() throws Exception { 176 assertFalse(validate("CLARINWebService_faulty-10.xml")); 177 178 } 174 179 } -
ComponentRegistry/trunk/CMDValidate/src/test/resources/schema/general-component-schema.xsd
r4524 r4623 261 261 <xs:annotation> 262 262 <xs:documentation>cardinality for elements and components</xs:documentation> 263 <xs:appinfo> 264 <sch:pattern id="c_card"> 265 <sch:title>Check cardinalities</sch:title> 266 <!-- 267 case minimum maximum check 268 1 UNK UNK OK 269 2 UNK number maximum ne 0 270 3 UNK unbounded OK 271 4 number UNK minimum le 1 272 5 number number minimum le maximum 273 6 number unbounded OK 274 7 unbounded UNK NOK 275 8 unbounded number NOK 276 9 unbounded unbounded OK 277 278 UNK can be either a missing attribute or an empty value, both can be detected with normalize-space(@...)='' 279 280 default CardinalityMin is 1 (based on the XSD minOccurs default value) 281 default CardinalityMax is 1 (based on the XSD maxOccurs default value) 282 283 If a basic XSLT 2.0 engine, like Saxon HE, is used for Schematron validation we can't cast to xs:nonNegativeInteger. 284 So we cast to xs:integer. The XSD validator should have already validated that the values are valid cardinality_types. 285 --> 286 <!-- skip case 1 --> 287 <!-- case 2 --> 288 <sch:rule context="*[(normalize-space(@CardinalityMin)='')][@CardinalityMax castable as xs:integer]"> 289 <sch:assert test="xs:integer(@CardinalityMax) ne 0">Maximum cardinality (0) cannot be lower than the default minimum cardinality (1)!</sch:assert> 290 </sch:rule> 291 <!-- skip case 3 --> 292 <!-- case 4 --> 293 <sch:rule context="*[@CardinalityMin castable as xs:integer][normalize-space(@CardinalityMax)='']"> 294 <sch:assert test="xs:integer(@CardinalityMin) le 1">Minimum cardinality (<sch:value-of select="@CardinalityMin"/>) should be lower or equal then the default maximum cardinality (1)!</sch:assert> 295 </sch:rule> 296 <!-- case 5 --> 297 <sch:rule context="*[@CardinalityMin castable as xs:integer][@CardinalityMax castable as xs:integer]"> 298 <sch:assert test="xs:integer(@CardinalityMin) le xs:integer(@CardinalityMax)">Minimum cardinality (<sch:value-of select="@CardinalityMin"/>) should be lower or equal then the maximum cardinality (<sch:value-of select="@CardinalityMax"/>)!</sch:assert> 299 </sch:rule> 300 <!-- skip case 6 --> 301 <!-- case 7, 8 and 9 --> 302 <sch:rule context="*[@CardinalityMin='unbounded']"> 303 <!-- case 7 and 8 --> 304 <sch:assert test="@CardinalityMax='unbounded'">Minimum cardinality (unbounded) can't be higher than the (default) maximum cardinality (<sch:value-of select="if (normalize-space(@CardinalityMax)='') then ('1') else (@CardinalityMax)"/>)!</sch:assert> 305 <!-- skip case 9 --> 306 </sch:rule> 307 </sch:pattern> 308 </xs:appinfo> 263 309 </xs:annotation> 264 310 <xs:union>
Note: See TracChangeset
for help on using the changeset viewer.