An identity constraint's selector and field xpath must be in the XSD 1.0 restricted-XPath subset (Part 1, 3.11.6), far narrower than full XPath: a leading optional .//, then /-separated steps, a step being '.', a name test (QName, '*', or NCName:*), or a child:: axis; a field path may end in an attribute step (@x or attribute::x). No predicates, no other axes, no absolute or interior //. The xpath was stored raw and compiled lazily with try?, so a malformed one was silently accepted. It is now lexed into a whitespace-tolerant token stream and parsed against the grammar: whitespace between tokens is allowed (child :: a, . //.) while // must be adjacent and a name test's own ':' may not be spaced. The name lexer uses the XML NameChar set so a non-ASCII NCName is accepted. The two identity tests that fed a malformed xpath and expected a validation-time located error now assert the stronger compile-time rejection. XSTS: invalid schemas accepted 785 to 736, valid schemas rejected held at 72, instance buckets unchanged. |
||
|---|---|---|
| .. | ||
| BuiltinType.swift | ||
| ComplexType.swift | ||
| ComplexValidator.swift | ||
| ComplexValidatorDerivation.swift | ||
| ComplexValidatorHelpers.swift | ||
| ComplexValidatorIDs.swift | ||
| ComplexValidatorStreaming.swift | ||
| ComplexValidatorXSIType.swift | ||
| ContentMatcher.swift | ||
| ContentModelDeterminism.swift | ||
| DateTimeParser.swift | ||
| DateTimeValue.swift | ||
| DecimalValue.swift | ||
| DerivationMethod.swift | ||
| DurationValue.swift | ||
| IdentityConstraint.swift | ||
| IdentityValidator.swift | ||
| IDTracker.swift | ||
| Lexical.swift | ||
| ParticleRestriction.swift | ||
| Primitive.swift | ||
| RelaxNGCompactHelpers.swift | ||
| RelaxNGCompactLexer.swift | ||
| RelaxNGCompactParser.swift | ||
| RelaxNGContentType.swift | ||
| RelaxNGDerivative.swift | ||
| RelaxNGDiagnostics.swift | ||
| RelaxNGFacets.swift | ||
| RelaxNGGrammarCheck.swift | ||
| RelaxNGGrammarCheckSections.swift | ||
| RelaxNGNameClasses.swift | ||
| RelaxNGNode.swift | ||
| RelaxNGParser.swift | ||
| RelaxNGParserIncludes.swift | ||
| RelaxNGPattern.swift | ||
| RelaxNGRestrictionChecker.swift | ||
| RelaxNGRestrictionOverlap.swift | ||
| RelaxNGRestrictionPaths.swift | ||
| RelaxNGRestrictions.swift | ||
| RelaxNGSchema.swift | ||
| SchemaContentOrder.swift | ||
| SchemaDocument.swift | ||
| SchemaIDAttribute.swift | ||
| SchemaIdentityXPath.swift | ||
| SchemaNameUniqueness.swift | ||
| SchemaReferences.swift | ||
| SchemaStructure.swift | ||
| SimpleType.swift | ||
| StreamingXSDValidator.swift | ||
| TypeDerivation.swift | ||
| XSDAttributeParser.swift | ||
| XSDCompletions.swift | ||
| XSDComplexContent.swift | ||
| XSDContext.swift | ||
| XSDDerivation.swift | ||
| XSDParser.swift | ||
| XSDSchemaValidations.swift | ||
| XSDSimpleParser.swift | ||
| XSDValidations.swift | ||
| XSDWildcardParser.swift | ||