Class: Lutaml::Xsd::Validation::BaseTypes::QNameValidator
- Inherits:
-
BaseTypeValidator
- Object
- BaseTypeValidator
- Lutaml::Xsd::Validation::BaseTypes::QNameValidator
- Defined in:
- lib/lutaml/xsd/validation/base_types/qname_validator.rb
Overview
Validates XSD QName type
The QName (Qualified Name) type represents an XML qualified name, which consists of an optional namespace prefix and a local part separated by a colon.
Constant Summary collapse
- NCNAME_PATTERN =
NCName pattern (Non-Colonized Name)
/^[a-zA-Z_][\w.-]*$/- QNAME_PATTERN =
QName pattern (prefix:localName or just localName)
/^([a-zA-Z_][\w.-]*:)?[a-zA-Z_][\w.-]*$/
Instance Method Summary collapse
-
#error_message(value) ⇒ String
Generate error message for invalid QName.
-
#valid?(value) ⇒ Boolean
Validate value is a valid QName.
Methods inherited from BaseTypeValidator
Instance Method Details
#error_message(value) ⇒ String
Generate error message for invalid QName
59 60 61 62 |
# File 'lib/lutaml/xsd/validation/base_types/qname_validator.rb', line 59 def (value) "Value '#{value}' is not a valid QName. " \ "Expected format: [prefix:]localName" end |
#valid?(value) ⇒ Boolean
Validate value is a valid QName
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/lutaml/xsd/validation/base_types/qname_validator.rb', line 35 def valid?(value) return false if value.nil? str = to_string(value).strip return false if str.empty? # Must match QName pattern return false unless str.match?(QNAME_PATTERN) # If it has a colon, validate both parts if str.include?(":") prefix, local = str.split(":", 2) return false if prefix.empty? || local.empty? return false unless prefix.match?(NCNAME_PATTERN) return false unless local.match?(NCNAME_PATTERN) end true end |