Module: PROIEL::PROIELXML::Schema Private
- Defined in:
- lib/proiel/proiel_xml/schema.rb
Overview
This module is part of a private API. You should avoid using this module if possible, as it may be removed or be changed in the future.
Functionality concerned with PROIEL XML schema loading and versioning. Functionality for validation using a PROIEL XML schema is found in Validator.
Defined Under Namespace
Classes: InvalidSchemaVersion
Class Method Summary collapse
-
.check_schema_version_of_xml_file(filename) ⇒ String
private
Opens a PROIEL XML schema file and peek at the schema version number that the file claims it conforms to.
-
.current_proiel_xml_schema_version ⇒ String
private
Returns the current version of the PROIEL XML schema.
-
.load_proiel_xml_schema(schema_version) ⇒ Nokogiri::XML::Schema
private
Loads a PROIEL XML schema.
-
.proiel_xml_schema_filename(schema_version) ⇒ String
private
Determines the filename of a specific version of the PROIEL XML schema.
Class Method Details
.check_schema_version_of_xml_file(filename) ⇒ String
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Opens a PROIEL XML schema file and peek at the schema version number that the file claims it conforms to.
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/proiel/proiel_xml/schema.rb', line 35 def self.check_schema_version_of_xml_file(filename) doc = Nokogiri::XML(File.read(filename)) if doc and doc.root and doc.root.name == 'proiel' case doc.root.attr('schema-version') when '2.0' '2.0' when '2.1' '2.1' when '3.0' '3.0' when NilClass '1.0' else raise InvalidSchemaVersion, 'invalid schema version number' end else raise InvalidSchemaVersion, 'top-level XML element not found' end end |
.current_proiel_xml_schema_version ⇒ String
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns the current version of the PROIEL XML schema.
18 19 20 |
# File 'lib/proiel/proiel_xml/schema.rb', line 18 def self.current_proiel_xml_schema_version '3.0' end |
.load_proiel_xml_schema(schema_version) ⇒ Nokogiri::XML::Schema
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Loads a PROIEL XML schema.
62 63 64 65 66 |
# File 'lib/proiel/proiel_xml/schema.rb', line 62 def self.load_proiel_xml_schema(schema_version) filename = proiel_xml_schema_filename(schema_version) Nokogiri::XML::Schema(File.open(filename).read) end |
.proiel_xml_schema_filename(schema_version) ⇒ String
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Determines the filename of a specific version of the PROIEL XML schema.
74 75 76 77 78 79 80 81 82 |
# File 'lib/proiel/proiel_xml/schema.rb', line 74 def self.proiel_xml_schema_filename(schema_version) if schema_version == '1.0' or schema_version == '2.0' or schema_version == '2.1' or schema_version == '3.0' File.join(File.dirname(__FILE__), "proiel-#{schema_version}", "proiel-#{schema_version}.xsd") else raise ArgumentError, 'invalid schema version' end end |