moxml 0.1.9 → 0.1.11

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.
Files changed (150) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/docs.yml +1 -1
  3. data/.github/workflows/rake.yml +16 -13
  4. data/.github/workflows/release.yml +1 -0
  5. data/.github/workflows/round-trip.yml +74 -0
  6. data/.gitignore +1 -0
  7. data/.rubocop.yml +1 -0
  8. data/.rubocop_todo.yml +160 -38
  9. data/Gemfile +2 -1
  10. data/README.adoc +287 -20
  11. data/Rakefile +11 -0
  12. data/data/w3c_entities.json +2131 -0
  13. data/docs/ENTITY_SUPPORT_FOR_LUTAML_MODEL.md +102 -0
  14. data/docs/_guides/index.adoc +14 -12
  15. data/docs/_guides/node-api-consistency.adoc +572 -0
  16. data/docs/_guides/xml-declaration.adoc +5 -5
  17. data/docs/_pages/adapters/ox.adoc +30 -0
  18. data/docs/_pages/adapters/rexml.adoc +1 -1
  19. data/docs/_pages/configuration.adoc +43 -0
  20. data/docs/_pages/node-api-reference.adoc +128 -3
  21. data/docs/_tutorials/namespace-handling.adoc +21 -0
  22. data/examples/rss_parser/rss_parser.rb +1 -3
  23. data/lib/moxml/adapter/base.rb +26 -2
  24. data/lib/moxml/adapter/headed_ox.rb +5 -4
  25. data/lib/moxml/adapter/libxml.rb +18 -3
  26. data/lib/moxml/adapter/nokogiri.rb +26 -2
  27. data/lib/moxml/adapter/oga.rb +137 -20
  28. data/lib/moxml/adapter/ox.rb +29 -3
  29. data/lib/moxml/adapter/rexml.rb +54 -7
  30. data/lib/moxml/attribute.rb +6 -0
  31. data/lib/moxml/builder.rb +6 -0
  32. data/lib/moxml/config.rb +52 -1
  33. data/lib/moxml/context.rb +21 -2
  34. data/lib/moxml/doctype.rb +33 -0
  35. data/lib/moxml/document.rb +6 -1
  36. data/lib/moxml/document_builder.rb +45 -1
  37. data/lib/moxml/element.rb +10 -3
  38. data/lib/moxml/entity_reference.rb +29 -0
  39. data/lib/moxml/entity_registry.rb +278 -0
  40. data/lib/moxml/error.rb +5 -5
  41. data/lib/moxml/node.rb +22 -8
  42. data/lib/moxml/node_set.rb +10 -6
  43. data/lib/moxml/processing_instruction.rb +6 -0
  44. data/lib/moxml/version.rb +1 -1
  45. data/lib/moxml/xml_utils.rb +25 -2
  46. data/lib/moxml/xpath/errors.rb +1 -1
  47. data/lib/moxml.rb +1 -0
  48. data/spec/consistency/README.md +3 -1
  49. data/spec/consistency/round_trip_spec.rb +479 -0
  50. data/spec/examples/readme_examples_spec.rb +1 -1
  51. data/spec/fixtures/round-trips/metanorma/a.xml +66 -0
  52. data/spec/fixtures/round-trips/metanorma/bilingual-en.xml +7682 -0
  53. data/spec/fixtures/round-trips/metanorma/bilingual-fr.xml +7520 -0
  54. data/spec/fixtures/round-trips/metanorma/bilingual.presentation.xml +21211 -0
  55. data/spec/fixtures/round-trips/metanorma/collection1.xml +313 -0
  56. data/spec/fixtures/round-trips/metanorma/collection1nested.xml +291 -0
  57. data/spec/fixtures/round-trips/metanorma/collection_docinline.xml +544 -0
  58. data/spec/fixtures/round-trips/metanorma/collection_full.xml +1776 -0
  59. data/spec/fixtures/round-trips/metanorma/dummy.1.xml +295 -0
  60. data/spec/fixtures/round-trips/metanorma/dummy.xml +349 -0
  61. data/spec/fixtures/round-trips/metanorma/footnotes.xml +70 -0
  62. data/spec/fixtures/round-trips/metanorma/iho.xml +116 -0
  63. data/spec/fixtures/round-trips/metanorma/rice-amd.final.xml +186 -0
  64. data/spec/fixtures/round-trips/metanorma/rice-amd.final_1.xml +180 -0
  65. data/spec/fixtures/round-trips/metanorma/rice-en.final.norepo.xml +116 -0
  66. data/spec/fixtures/round-trips/metanorma/rice-en.final.xml +149 -0
  67. data/spec/fixtures/round-trips/metanorma/rice-en.final_1.xml +144 -0
  68. data/spec/fixtures/round-trips/metanorma/rice1-en.final.xml +120 -0
  69. data/spec/fixtures/round-trips/metanorma/rice2-en.final.xml +116 -0
  70. data/spec/fixtures/round-trips/metanorma/test_sectionsplit.xml +119 -0
  71. data/spec/fixtures/round-trips/niso-jats/bmj_sample.xml +1068 -0
  72. data/spec/fixtures/round-trips/niso-jats/element_citation.xml +7 -0
  73. data/spec/fixtures/round-trips/niso-jats/pnas_sample.xml +3768 -0
  74. data/spec/fixtures/round-trips/rfcxml/rfc8881.xml +45848 -0
  75. data/spec/fixtures/round-trips/rfcxml/rfc8994.xml +6607 -0
  76. data/spec/fixtures/round-trips/rfcxml/rfc9000.xml +9064 -0
  77. data/spec/fixtures/round-trips/rfcxml/rfc9043.xml +5527 -0
  78. data/spec/fixtures/round-trips/rfcxml/rfc9051.xml +14286 -0
  79. data/spec/fixtures/round-trips/rfcxml/rfc9110.xml +18156 -0
  80. data/spec/fixtures/round-trips/rfcxml/rfc9260.xml +9136 -0
  81. data/spec/fixtures/round-trips/rfcxml/rfc9293.xml +8300 -0
  82. data/spec/fixtures/round-trips/rfcxml/rfc9380.xml +8916 -0
  83. data/spec/fixtures/round-trips/rfcxml/rfc9420.xml +8927 -0
  84. data/spec/fixtures/w3c/namespaces/1.0/001.xml +7 -0
  85. data/spec/fixtures/w3c/namespaces/1.0/002.xml +8 -0
  86. data/spec/fixtures/w3c/namespaces/1.0/003.xml +7 -0
  87. data/spec/fixtures/w3c/namespaces/1.0/004.xml +7 -0
  88. data/spec/fixtures/w3c/namespaces/1.0/005.xml +7 -0
  89. data/spec/fixtures/w3c/namespaces/1.0/006.xml +7 -0
  90. data/spec/fixtures/w3c/namespaces/1.0/007.xml +20 -0
  91. data/spec/fixtures/w3c/namespaces/1.0/008.xml +20 -0
  92. data/spec/fixtures/w3c/namespaces/1.0/009.xml +19 -0
  93. data/spec/fixtures/w3c/namespaces/1.0/010.xml +19 -0
  94. data/spec/fixtures/w3c/namespaces/1.0/011.xml +20 -0
  95. data/spec/fixtures/w3c/namespaces/1.0/012.xml +19 -0
  96. data/spec/fixtures/w3c/namespaces/1.0/013.xml +5 -0
  97. data/spec/fixtures/w3c/namespaces/1.0/014.xml +3 -0
  98. data/spec/fixtures/w3c/namespaces/1.0/015.xml +3 -0
  99. data/spec/fixtures/w3c/namespaces/1.0/016.xml +3 -0
  100. data/spec/fixtures/w3c/namespaces/1.0/017.xml +3 -0
  101. data/spec/fixtures/w3c/namespaces/1.0/018.xml +3 -0
  102. data/spec/fixtures/w3c/namespaces/1.0/019.xml +3 -0
  103. data/spec/fixtures/w3c/namespaces/1.0/020.xml +3 -0
  104. data/spec/fixtures/w3c/namespaces/1.0/021.xml +6 -0
  105. data/spec/fixtures/w3c/namespaces/1.0/022.xml +6 -0
  106. data/spec/fixtures/w3c/namespaces/1.0/023.xml +6 -0
  107. data/spec/fixtures/w3c/namespaces/1.0/024.xml +6 -0
  108. data/spec/fixtures/w3c/namespaces/1.0/025.xml +3 -0
  109. data/spec/fixtures/w3c/namespaces/1.0/026.xml +3 -0
  110. data/spec/fixtures/w3c/namespaces/1.0/027.xml +3 -0
  111. data/spec/fixtures/w3c/namespaces/1.0/028.xml +3 -0
  112. data/spec/fixtures/w3c/namespaces/1.0/029.xml +4 -0
  113. data/spec/fixtures/w3c/namespaces/1.0/030.xml +4 -0
  114. data/spec/fixtures/w3c/namespaces/1.0/031.xml +4 -0
  115. data/spec/fixtures/w3c/namespaces/1.0/032.xml +5 -0
  116. data/spec/fixtures/w3c/namespaces/1.0/033.xml +4 -0
  117. data/spec/fixtures/w3c/namespaces/1.0/034.xml +3 -0
  118. data/spec/fixtures/w3c/namespaces/1.0/035.xml +8 -0
  119. data/spec/fixtures/w3c/namespaces/1.0/036.xml +8 -0
  120. data/spec/fixtures/w3c/namespaces/1.0/037.xml +8 -0
  121. data/spec/fixtures/w3c/namespaces/1.0/038.xml +8 -0
  122. data/spec/fixtures/w3c/namespaces/1.0/039.xml +10 -0
  123. data/spec/fixtures/w3c/namespaces/1.0/040.xml +9 -0
  124. data/spec/fixtures/w3c/namespaces/1.0/041.xml +8 -0
  125. data/spec/fixtures/w3c/namespaces/1.0/042.xml +4 -0
  126. data/spec/fixtures/w3c/namespaces/1.0/043.xml +7 -0
  127. data/spec/fixtures/w3c/namespaces/1.0/044.xml +7 -0
  128. data/spec/fixtures/w3c/namespaces/1.0/045.xml +7 -0
  129. data/spec/fixtures/w3c/namespaces/1.0/046.xml +10 -0
  130. data/spec/fixtures/w3c/namespaces/1.0/047.xml +4 -0
  131. data/spec/fixtures/w3c/namespaces/1.0/048.xml +5 -0
  132. data/spec/fixtures/w3c/namespaces/1.0/LICENSE.md +32 -0
  133. data/spec/fixtures/w3c/namespaces/1.0/README.adoc +42 -0
  134. data/spec/fixtures/w3c/namespaces/1.0/rmt-ns10.xml +156 -0
  135. data/spec/integration/shared_examples/node_wrappers/namespace_behavior.rb +14 -2
  136. data/spec/integration/shared_examples/w3c_namespace_examples.rb +10 -0
  137. data/spec/integration/w3c_namespace_spec.rb +69 -0
  138. data/spec/moxml/adapter/libxml_spec.rb +7 -1
  139. data/spec/moxml/adapter/oga_spec.rb +92 -0
  140. data/spec/moxml/config_spec.rb +75 -0
  141. data/spec/moxml/doctype_spec.rb +19 -3
  142. data/spec/moxml/entity_registry_spec.rb +184 -0
  143. data/spec/moxml/error_spec.rb +2 -2
  144. data/spec/moxml/namespace_uri_validation_spec.rb +140 -0
  145. data/spec/moxml/xpath/axes_spec.rb +3 -4
  146. data/spec/performance/xpath_benchmark_spec.rb +6 -54
  147. data/spec/support/w3c_namespace_helpers.rb +41 -0
  148. data/spec/unit/rexml_isolated_test.rb +271 -0
  149. metadata +99 -3
  150. data/.ruby-version +0 -1
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: moxml
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.1.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-11-24 00:00:00.000000000 Z
11
+ date: 2026-04-16 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: |
14
14
  Moxml is a unified XML manipulation library that provides a common API
@@ -25,11 +25,11 @@ files:
25
25
  - ".github/workflows/docs.yml"
26
26
  - ".github/workflows/rake.yml"
27
27
  - ".github/workflows/release.yml"
28
+ - ".github/workflows/round-trip.yml"
28
29
  - ".gitignore"
29
30
  - ".rspec"
30
31
  - ".rubocop.yml"
31
32
  - ".rubocop_todo.yml"
32
- - ".ruby-version"
33
33
  - Gemfile
34
34
  - LICENSE.md
35
35
  - README.adoc
@@ -38,12 +38,15 @@ files:
38
38
  - benchmarks/generate_report.rb
39
39
  - bin/console
40
40
  - bin/setup
41
+ - data/w3c_entities.json
42
+ - docs/ENTITY_SUPPORT_FOR_LUTAML_MODEL.md
41
43
  - docs/Gemfile
42
44
  - docs/_config.yml
43
45
  - docs/_guides/advanced-features.adoc
44
46
  - docs/_guides/development-testing.adoc
45
47
  - docs/_guides/index.adoc
46
48
  - docs/_guides/modifying-xml.adoc
49
+ - docs/_guides/node-api-consistency.adoc
47
50
  - docs/_guides/parsing-xml.adoc
48
51
  - docs/_guides/sax-parsing.adoc
49
52
  - docs/_guides/working-with-documents.adoc
@@ -126,6 +129,8 @@ files:
126
129
  - lib/moxml/document.rb
127
130
  - lib/moxml/document_builder.rb
128
131
  - lib/moxml/element.rb
132
+ - lib/moxml/entity_reference.rb
133
+ - lib/moxml/entity_registry.rb
129
134
  - lib/moxml/error.rb
130
135
  - lib/moxml/namespace.rb
131
136
  - lib/moxml/node.rb
@@ -156,13 +161,98 @@ files:
156
161
  - sig/moxml.rbs
157
162
  - spec/consistency/README.md
158
163
  - spec/consistency/adapter_parity_spec.rb
164
+ - spec/consistency/round_trip_spec.rb
159
165
  - spec/examples/README.md
160
166
  - spec/examples/attribute_examples_spec.rb
161
167
  - spec/examples/basic_usage_spec.rb
162
168
  - spec/examples/namespace_examples_spec.rb
163
169
  - spec/examples/readme_examples_spec.rb
164
170
  - spec/examples/xpath_examples_spec.rb
171
+ - spec/fixtures/round-trips/metanorma/a.xml
172
+ - spec/fixtures/round-trips/metanorma/bilingual-en.xml
173
+ - spec/fixtures/round-trips/metanorma/bilingual-fr.xml
174
+ - spec/fixtures/round-trips/metanorma/bilingual.presentation.xml
175
+ - spec/fixtures/round-trips/metanorma/collection1.xml
176
+ - spec/fixtures/round-trips/metanorma/collection1nested.xml
177
+ - spec/fixtures/round-trips/metanorma/collection_docinline.xml
178
+ - spec/fixtures/round-trips/metanorma/collection_full.xml
179
+ - spec/fixtures/round-trips/metanorma/dummy.1.xml
180
+ - spec/fixtures/round-trips/metanorma/dummy.xml
181
+ - spec/fixtures/round-trips/metanorma/footnotes.xml
182
+ - spec/fixtures/round-trips/metanorma/iho.xml
183
+ - spec/fixtures/round-trips/metanorma/rice-amd.final.xml
184
+ - spec/fixtures/round-trips/metanorma/rice-amd.final_1.xml
185
+ - spec/fixtures/round-trips/metanorma/rice-en.final.norepo.xml
186
+ - spec/fixtures/round-trips/metanorma/rice-en.final.xml
187
+ - spec/fixtures/round-trips/metanorma/rice-en.final_1.xml
188
+ - spec/fixtures/round-trips/metanorma/rice1-en.final.xml
189
+ - spec/fixtures/round-trips/metanorma/rice2-en.final.xml
190
+ - spec/fixtures/round-trips/metanorma/test_sectionsplit.xml
191
+ - spec/fixtures/round-trips/niso-jats/bmj_sample.xml
192
+ - spec/fixtures/round-trips/niso-jats/element_citation.xml
193
+ - spec/fixtures/round-trips/niso-jats/pnas_sample.xml
194
+ - spec/fixtures/round-trips/rfcxml/rfc8881.xml
195
+ - spec/fixtures/round-trips/rfcxml/rfc8994.xml
196
+ - spec/fixtures/round-trips/rfcxml/rfc9000.xml
197
+ - spec/fixtures/round-trips/rfcxml/rfc9043.xml
198
+ - spec/fixtures/round-trips/rfcxml/rfc9051.xml
199
+ - spec/fixtures/round-trips/rfcxml/rfc9110.xml
200
+ - spec/fixtures/round-trips/rfcxml/rfc9260.xml
201
+ - spec/fixtures/round-trips/rfcxml/rfc9293.xml
202
+ - spec/fixtures/round-trips/rfcxml/rfc9380.xml
203
+ - spec/fixtures/round-trips/rfcxml/rfc9420.xml
165
204
  - spec/fixtures/small.xml
205
+ - spec/fixtures/w3c/namespaces/1.0/001.xml
206
+ - spec/fixtures/w3c/namespaces/1.0/002.xml
207
+ - spec/fixtures/w3c/namespaces/1.0/003.xml
208
+ - spec/fixtures/w3c/namespaces/1.0/004.xml
209
+ - spec/fixtures/w3c/namespaces/1.0/005.xml
210
+ - spec/fixtures/w3c/namespaces/1.0/006.xml
211
+ - spec/fixtures/w3c/namespaces/1.0/007.xml
212
+ - spec/fixtures/w3c/namespaces/1.0/008.xml
213
+ - spec/fixtures/w3c/namespaces/1.0/009.xml
214
+ - spec/fixtures/w3c/namespaces/1.0/010.xml
215
+ - spec/fixtures/w3c/namespaces/1.0/011.xml
216
+ - spec/fixtures/w3c/namespaces/1.0/012.xml
217
+ - spec/fixtures/w3c/namespaces/1.0/013.xml
218
+ - spec/fixtures/w3c/namespaces/1.0/014.xml
219
+ - spec/fixtures/w3c/namespaces/1.0/015.xml
220
+ - spec/fixtures/w3c/namespaces/1.0/016.xml
221
+ - spec/fixtures/w3c/namespaces/1.0/017.xml
222
+ - spec/fixtures/w3c/namespaces/1.0/018.xml
223
+ - spec/fixtures/w3c/namespaces/1.0/019.xml
224
+ - spec/fixtures/w3c/namespaces/1.0/020.xml
225
+ - spec/fixtures/w3c/namespaces/1.0/021.xml
226
+ - spec/fixtures/w3c/namespaces/1.0/022.xml
227
+ - spec/fixtures/w3c/namespaces/1.0/023.xml
228
+ - spec/fixtures/w3c/namespaces/1.0/024.xml
229
+ - spec/fixtures/w3c/namespaces/1.0/025.xml
230
+ - spec/fixtures/w3c/namespaces/1.0/026.xml
231
+ - spec/fixtures/w3c/namespaces/1.0/027.xml
232
+ - spec/fixtures/w3c/namespaces/1.0/028.xml
233
+ - spec/fixtures/w3c/namespaces/1.0/029.xml
234
+ - spec/fixtures/w3c/namespaces/1.0/030.xml
235
+ - spec/fixtures/w3c/namespaces/1.0/031.xml
236
+ - spec/fixtures/w3c/namespaces/1.0/032.xml
237
+ - spec/fixtures/w3c/namespaces/1.0/033.xml
238
+ - spec/fixtures/w3c/namespaces/1.0/034.xml
239
+ - spec/fixtures/w3c/namespaces/1.0/035.xml
240
+ - spec/fixtures/w3c/namespaces/1.0/036.xml
241
+ - spec/fixtures/w3c/namespaces/1.0/037.xml
242
+ - spec/fixtures/w3c/namespaces/1.0/038.xml
243
+ - spec/fixtures/w3c/namespaces/1.0/039.xml
244
+ - spec/fixtures/w3c/namespaces/1.0/040.xml
245
+ - spec/fixtures/w3c/namespaces/1.0/041.xml
246
+ - spec/fixtures/w3c/namespaces/1.0/042.xml
247
+ - spec/fixtures/w3c/namespaces/1.0/043.xml
248
+ - spec/fixtures/w3c/namespaces/1.0/044.xml
249
+ - spec/fixtures/w3c/namespaces/1.0/045.xml
250
+ - spec/fixtures/w3c/namespaces/1.0/046.xml
251
+ - spec/fixtures/w3c/namespaces/1.0/047.xml
252
+ - spec/fixtures/w3c/namespaces/1.0/048.xml
253
+ - spec/fixtures/w3c/namespaces/1.0/LICENSE.md
254
+ - spec/fixtures/w3c/namespaces/1.0/README.adoc
255
+ - spec/fixtures/w3c/namespaces/1.0/rmt-ns10.xml
166
256
  - spec/integration/README.md
167
257
  - spec/integration/all_adapters_spec.rb
168
258
  - spec/integration/headed_ox_integration_spec.rb
@@ -185,6 +275,8 @@ files:
185
275
  - spec/integration/shared_examples/node_wrappers/node_set_behavior.rb
186
276
  - spec/integration/shared_examples/node_wrappers/processing_instruction_behavior.rb
187
277
  - spec/integration/shared_examples/node_wrappers/text_behavior.rb
278
+ - spec/integration/shared_examples/w3c_namespace_examples.rb
279
+ - spec/integration/w3c_namespace_spec.rb
188
280
  - spec/moxml/README.md
189
281
  - spec/moxml/adapter/.gitkeep
190
282
  - spec/moxml/adapter/README.md
@@ -210,9 +302,11 @@ files:
210
302
  - spec/moxml/document_builder_spec.rb
211
303
  - spec/moxml/document_spec.rb
212
304
  - spec/moxml/element_spec.rb
305
+ - spec/moxml/entity_registry_spec.rb
213
306
  - spec/moxml/error_spec.rb
214
307
  - spec/moxml/moxml_spec.rb
215
308
  - spec/moxml/namespace_spec.rb
309
+ - spec/moxml/namespace_uri_validation_spec.rb
216
310
  - spec/moxml/node_set_spec.rb
217
311
  - spec/moxml/node_spec.rb
218
312
  - spec/moxml/processing_instruction_spec.rb
@@ -248,7 +342,9 @@ files:
248
342
  - spec/performance/thread_safety_spec.rb
249
343
  - spec/performance/xpath_benchmark_spec.rb
250
344
  - spec/spec_helper.rb
345
+ - spec/support/w3c_namespace_helpers.rb
251
346
  - spec/support/xml_matchers.rb
347
+ - spec/unit/rexml_isolated_test.rb
252
348
  homepage: https://github.com/lutaml/moxml
253
349
  licenses:
254
350
  - BSD-2-Clause
data/.ruby-version DELETED
@@ -1 +0,0 @@
1
- 3.0.7@moxml