lutaml-xsd 1.2.90 → 1.2.92

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 455a2b544740a5953b1d2195962d89a3b549c8daa3b97c97b8bc8a9739bec815
4
- data.tar.gz: 5157237514326ad902236ce4a3f2f67940680ef8a3e0f2a080d3012a2ee6c6c1
3
+ metadata.gz: 19a629abe9ac053899019037981e12e3c502bbbd17c0f6456787190dd52b7713
4
+ data.tar.gz: a403d2c8184c297216afffa96ff9f236e656f6027d1e8595f9afa794cb5362a6
5
5
  SHA512:
6
- metadata.gz: 539801642fef0b0625c6d647305411294f71164f0ebc49b92993895b473784112aafde653b46cc87f32d3b278dc71a7eed6468b366343a1731bd51304102814a
7
- data.tar.gz: 00413b4b3e957a333d13285ad87219cdec576d7ac135dbc7d8561aee6f41b3bd613338910b4b366622805e685c7c34cbb204b6bfbc74376bee5c5b3424e2723c
6
+ metadata.gz: 76a79f3d5e6ff50291fe0d8e9f29cd53325ae38b7a8eb679ef758829cac8069bb6f3911f4cf2c7739522db3cfe80f6514107c88813316f849ab2cd4e49e5ab74
7
+ data.tar.gz: 4f44e60f03e3145daee06ec180e6a4fdbbd0d03618104641c19991989a8d028f23d5a2f4209adbfb05fa80cfb10dc0a6e10450e8debade2208debdb35e93dd49
data/TODO.conformance.md CHANGED
@@ -238,6 +238,9 @@ corners.
238
238
  | mixed="true" on a particle-less complexType rejects text (ctA033/ctA035) | 2 | leptris-rs#35 (sub 2) |
239
239
  | xs:redefine composition compiles to an EMPTY content model (idF025/033/034, idG018/019/027/028) | 7 | leptris-rs#35 (sub 3) |
240
240
  | Default-supplied content on an empty list-typed element (stZ072) | 1 | leptris-rs#35 (sub 4) |
241
+ | Fixed+empty ROOT-content legs (stE050, stE055) — survivors of the #25/#35 wave | 2 | leptris-rs#45 |
242
+ | Substitution member bound to a same-name local of another type (elemZ020) — survivor of #29 | 1 | leptris-rs#46 |
243
+ | Parsed schemas discard xmlns prefix maps — qualified QName resolution impossible (particlesQ032 class) | 1+ | lutaml-model#1131 |
241
244
  | Fixed + empty ATTRIBUTE values still rejected — the #25 attribute leg (addB104, attO006) | 2 | leptris-rs#36 |
242
245
  | Content model enforced on NILLED elements (QFE1700g2, particlesIa002) | 2 | leptris-rs#26 |
243
246
  | dateTime enumeration rejects timezone-equal forms (dateTime_enumeration005a/b) | 2 | leptris-rs#27 |
@@ -512,6 +515,19 @@ tuple keys, node-set field violations and absent-field rows handled, cross-eleme
512
515
  checks bind the no-ns int ct-A to the ns-b boolean children —
513
516
  'true' vs xsd:int — the per-child type plumbing under hint
514
517
  layering), full type-redefine body semantics.
518
+ - RIDE-407 PIN-BACK (2026-11-05): the leptris 1.9.407.0 + moxml
519
+ 0.6.3 + lutaml-model 0.8.166 train carried fixes (the FULL #45
520
+ stE legs, the #522 attgC four + attgD mostly + attJ018 +
521
+ schF1/P2, stE065/066/096) AND a WHOLESALE 407 regex regression:
522
+ ~177 cases — the ENTIRE Unicode-block escape family (~80
523
+ \p{Is...} per-block tests) plus the reL/reP/reQ/reR/reS/reT
524
+ series — filed leptris-rs#47; moxml 0.6.3 regressed 5 attribute
525
+ cases (addB059/196c/197c, attO009/011) — filed moxml#529. THE
526
+ STACK IS PINNED BACK to the known-good 1.9.406.0/0.6.2/0.8.161
527
+ (98.28% restored, zero regressions vs the 406 baseline). The
528
+ 407 wins ride again when #47 and #529 land. NET: no score
529
+ change; the pin protects the register.
530
+
515
531
  - SIMPLE-TYPE-CHILDREN ROUND (2026-11-05, third attempt — the first
516
532
  two regressed 15 at scale): +1 DataTypes (dtZ86723; suite
517
533
  4613->4614 = 98.25%, zero regressions, rspec green). A simple
@@ -170,7 +170,18 @@ module Lutaml
170
170
  schema = Lutaml::Xml::Schema::Xsd.parse(
171
171
  File.read(kase.schema_path), location: kase.schema_path
172
172
  )
173
- Repository.new(schema.target_namespace.to_s => schema)
173
+ # Location registration (moxml#522): the engine lane's
174
+ # compile consults the schema's file path — without it
175
+ # the facade cannot resolve the instance's
176
+ # xsi:schemaLocation hint documents, and strict admission
177
+ # answers against the head unit alone. The path goes in
178
+ # the LOCATIONS table (second argument), never the
179
+ # namespace table: a path key in all_schemas re-indexes
180
+ # the schema and flips substitution-group verdicts.
181
+ Repository.new(
182
+ { schema.target_namespace.to_s => schema },
183
+ { kase.schema_path => schema },
184
+ )
174
185
  end
175
186
  end
176
187
  end
@@ -58,6 +58,13 @@ module Lutaml
58
58
  # the lenient unresolvable path (idF/idG/idH class).
59
59
  @redefined_targets = []
60
60
  @redefined_body_names = []
61
+ # Redefine SIMPLE-type bodies: the body is the effective type
62
+ # for every reference to the name (§4.2.2 — redefine modifies
63
+ # the schema as a whole, including target-document
64
+ # components; stZ033: the target doc's own b2 carries the
65
+ # redefined enumeration). The facet walk never recurses into
66
+ # named bases, so the body's base reference terminates here.
67
+ @redefined_simple_bodies = {}
61
68
  @elements = index_elements
62
69
  end
63
70
 
@@ -212,6 +219,11 @@ module Lutaml
212
219
  def resolve_named_type(local_name, owner_ns = nil)
213
220
  return nil if local_name.nil? || local_name.empty?
214
221
 
222
+ # A redefine SIMPLE-type body is the effective type for every
223
+ # reference to the name.
224
+ body = @redefined_simple_bodies[local_name]
225
+ return body if body
226
+
215
227
  list = named_type_candidates(local_name)
216
228
  return nil if list.empty?
217
229
  # A nil owner means the referencing declaration lives in NO
@@ -696,7 +708,13 @@ module Lutaml
696
708
  end
697
709
  Array(red.simple_type).each do |body|
698
710
  name = body.name.to_s
699
- @redefined_body_names << name unless name.empty?
711
+ next if name.empty?
712
+
713
+ @redefined_body_names << name
714
+ # The body IS the effective type (§4.2.2): every reference
715
+ # to the name — including the target document's own — sees
716
+ # the redefined facets.
717
+ @redefined_simple_bodies[name] = body
700
718
  end
701
719
  Array(red.attribute_group).each do |group|
702
720
  name = group.name.to_s
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Lutaml
4
4
  module Xsd
5
- VERSION = "1.2.90"
5
+ VERSION = "1.2.92"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lutaml-xsd
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.90
4
+ version: 1.2.92
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.