xcop 0.10.2 → 0.10.3

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: 38b6fe520c9b6d5c13c9dbb395fc5484c935311f2bfee2c83594b95023099a5a
4
- data.tar.gz: 8484754dd75c22a9e5f21452a3a92e3704a9a1a9d37285eda11f0a0f9e11c83c
3
+ metadata.gz: d60b5b604d878305feaee1897024cdb25f422e817e3c8fdd6ad03763d055e9fe
4
+ data.tar.gz: 5d778bf7c386b682cb8f0d1df07c927e0c978c2a3c6c80d85b6cbfe5511f5052
5
5
  SHA512:
6
- metadata.gz: '0208353e4449b9b6b0a67b1cdaf324f0f0f600e00251d1dd350165b759b260bb2ffa1565427b45b6247b56421c496b8a2f927b9b980b2a9367d6cb08871d0b52'
7
- data.tar.gz: f132099516bc9aeea73ffddc77c29f5f3a1e3e634b516da942a267e2748df87fff9a40df74d4f1af1f342e1ce7b67a074118efb07b1684e286dc01bae47f0074
6
+ metadata.gz: b2ab0ed8903b36aa5dd062e6056209166425c39801ef03dc61650e721af42715b39aaa11f325ea8f8f860aad3acaf826ae469591154337a8aab73dd98e564b64
7
+ data.tar.gz: e8127c93fe4d435a775394a77bd737d3203243fdbb957207c32257f7905060a1eb264ce39484f1a1e518ce85528990bc9d30bcb7f239df2d33b7b08a235fcbbd
data/lib/xcop/document.rb CHANGED
@@ -46,6 +46,8 @@ class Xcop::Document
46
46
 
47
47
  XSI_NS = 'http://www.w3.org/2001/XMLSchema-instance'.freeze
48
48
 
49
+ PREFIX_LISTS = %w[exclude-result-prefixes extension-element-prefixes].freeze
50
+
49
51
  private
50
52
 
51
53
  # The canonical, well-formatted version of the document.
@@ -110,7 +112,13 @@ class Xcop::Document
110
112
  # prefix only inside +select+, +test+, +match+, +as+, +use+ and
111
113
  # similar attributes (e.g. +as="xs:integer"+ or +select="eo:foo()"+),
112
114
  # so stripping such a "declared but not QName-used" prefix would break
113
- # the stylesheet. See #161.
115
+ # the stylesheet. See #161. A prefix is used, too, when it is named in an
116
+ # +exclude-result-prefixes+ or +extension-element-prefixes+ attribute;
117
+ # these list bare prefixes with no colon, so the +prefix:+ scan never
118
+ # catches them, yet XSLT requires every prefix named there to resolve to
119
+ # a declared namespace (dropping the declaration is the static error
120
+ # XTSE0808). The token +#default+ refers to the default namespace. See
121
+ # #165.
114
122
  def unused(xml)
115
123
  used = Set.new
116
124
  declared = Set.new
@@ -120,6 +128,8 @@ class Xcop::Document
120
128
  node.attribute_nodes.each do |attr|
121
129
  used << attr.namespace.prefix if attr.namespace
122
130
  attr.value.scan(/([A-Za-z_][\w.-]*):/) { |m| used << m.first }
131
+ next unless PREFIX_LISTS.include?(attr.name)
132
+ attr.value.split.each { |token| used << (token == '#default' ? nil : token) }
123
133
  end
124
134
  node.namespace_definitions.each { |ns| declared << ns.prefix }
125
135
  end
data/lib/xcop/version.rb CHANGED
@@ -6,5 +6,5 @@
6
6
  # Copyright:: Copyright (c) 2017-2026 Yegor Bugayenko
7
7
  # License:: MIT
8
8
  module Xcop
9
- VERSION = '0.10.2'.freeze
9
+ VERSION = '0.10.3'.freeze
10
10
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xcop
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.2
4
+ version: 0.10.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko