caxlsx 3.2.0 → 3.4.0
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 +4 -4
- data/.yardopts +9 -9
- data/.yardopts_guide +18 -18
- data/CHANGELOG.md +394 -354
- data/LICENSE +21 -21
- data/README.md +184 -168
- data/Rakefile +28 -29
- data/examples/generate.rb +15 -15
- data/lib/axlsx/content_type/abstract_content_type.rb +29 -32
- data/lib/axlsx/content_type/content_type.rb +22 -26
- data/lib/axlsx/content_type/default.rb +21 -25
- data/lib/axlsx/content_type/override.rb +21 -25
- data/lib/axlsx/doc_props/app.rb +230 -235
- data/lib/axlsx/doc_props/core.rb +34 -39
- data/lib/axlsx/drawing/area_chart.rb +96 -99
- data/lib/axlsx/drawing/area_series.rb +107 -110
- data/lib/axlsx/drawing/ax_data_source.rb +21 -26
- data/lib/axlsx/drawing/axes.rb +60 -61
- data/lib/axlsx/drawing/axis.rb +185 -190
- data/lib/axlsx/drawing/bar_3D_chart.rb +145 -148
- data/lib/axlsx/drawing/bar_chart.rb +135 -138
- data/lib/axlsx/drawing/bar_series.rb +91 -97
- data/lib/axlsx/drawing/bubble_chart.rb +56 -59
- data/lib/axlsx/drawing/bubble_series.rb +60 -63
- data/lib/axlsx/drawing/cat_axis.rb +80 -85
- data/lib/axlsx/drawing/chart.rb +294 -276
- data/lib/axlsx/drawing/d_lbls.rb +92 -90
- data/lib/axlsx/drawing/drawing.rb +163 -167
- data/lib/axlsx/drawing/graphic_frame.rb +51 -54
- data/lib/axlsx/drawing/hyperlink.rb +97 -100
- data/lib/axlsx/drawing/line_3D_chart.rb +64 -68
- data/lib/axlsx/drawing/line_chart.rb +96 -99
- data/lib/axlsx/drawing/line_series.rb +107 -110
- data/lib/axlsx/drawing/marker.rb +80 -84
- data/lib/axlsx/drawing/num_data.rb +47 -52
- data/lib/axlsx/drawing/num_data_source.rb +58 -62
- data/lib/axlsx/drawing/num_val.rb +31 -34
- data/lib/axlsx/drawing/one_cell_anchor.rb +97 -99
- data/lib/axlsx/drawing/pic.rb +244 -211
- data/lib/axlsx/drawing/picture_locking.rb +39 -42
- data/lib/axlsx/drawing/pie_3D_chart.rb +42 -47
- data/lib/axlsx/drawing/pie_series.rb +69 -74
- data/lib/axlsx/drawing/scaling.rb +57 -60
- data/lib/axlsx/drawing/scatter_chart.rb +71 -74
- data/lib/axlsx/drawing/scatter_series.rb +126 -129
- data/lib/axlsx/drawing/ser_axis.rb +41 -45
- data/lib/axlsx/drawing/series.rb +67 -69
- data/lib/axlsx/drawing/series_title.rb +23 -25
- data/lib/axlsx/drawing/str_data.rb +37 -42
- data/lib/axlsx/drawing/str_val.rb +31 -34
- data/lib/axlsx/drawing/title.rb +104 -97
- data/lib/axlsx/drawing/two_cell_anchor.rb +95 -97
- data/lib/axlsx/drawing/val_axis.rb +34 -37
- data/lib/axlsx/drawing/view_3D.rb +115 -115
- data/lib/axlsx/drawing/vml_drawing.rb +39 -42
- data/lib/axlsx/drawing/vml_shape.rb +63 -66
- data/lib/axlsx/package.rb +397 -388
- data/lib/axlsx/rels/relationship.rb +127 -130
- data/lib/axlsx/rels/relationships.rb +29 -32
- data/lib/axlsx/stylesheet/border.rb +70 -73
- data/lib/axlsx/stylesheet/border_pr.rb +69 -71
- data/lib/axlsx/stylesheet/cell_alignment.rb +124 -132
- data/lib/axlsx/stylesheet/cell_protection.rb +38 -41
- data/lib/axlsx/stylesheet/cell_style.rb +68 -72
- data/lib/axlsx/stylesheet/color.rb +77 -76
- data/lib/axlsx/stylesheet/dxf.rb +75 -79
- data/lib/axlsx/stylesheet/fill.rb +31 -35
- data/lib/axlsx/stylesheet/font.rb +157 -156
- data/lib/axlsx/stylesheet/gradient_fill.rb +101 -103
- data/lib/axlsx/stylesheet/gradient_stop.rb +36 -37
- data/lib/axlsx/stylesheet/num_fmt.rb +83 -86
- data/lib/axlsx/stylesheet/pattern_fill.rb +71 -73
- data/lib/axlsx/stylesheet/styles.rb +543 -494
- data/lib/axlsx/stylesheet/table_style.rb +51 -54
- data/lib/axlsx/stylesheet/table_style_element.rb +74 -77
- data/lib/axlsx/stylesheet/table_styles.rb +42 -46
- data/lib/axlsx/stylesheet/xf.rb +144 -147
- data/lib/axlsx/util/accessors.rb +62 -64
- data/lib/axlsx/util/constants.rb +414 -410
- data/lib/axlsx/util/mime_type_utils.rb +24 -11
- data/lib/axlsx/util/options_parser.rb +15 -16
- data/lib/axlsx/util/serialized_attributes.rb +88 -89
- data/lib/axlsx/util/simple_typed_list.rb +180 -179
- data/lib/axlsx/util/storage.rb +142 -146
- data/lib/axlsx/util/validators.rb +315 -312
- data/lib/axlsx/util/zip_command.rb +71 -73
- data/lib/axlsx/version.rb +4 -5
- data/lib/axlsx/workbook/defined_name.rb +129 -128
- data/lib/axlsx/workbook/defined_names.rb +20 -21
- data/lib/axlsx/workbook/shared_strings_table.rb +74 -77
- data/lib/axlsx/workbook/workbook.rb +430 -395
- data/lib/axlsx/workbook/workbook_view.rb +75 -80
- data/lib/axlsx/workbook/workbook_views.rb +20 -22
- data/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb +78 -77
- data/lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb +94 -94
- data/lib/axlsx/workbook/worksheet/auto_filter/filters.rb +243 -244
- data/lib/axlsx/workbook/worksheet/border_creator.rb +79 -0
- data/lib/axlsx/workbook/worksheet/break.rb +32 -35
- data/lib/axlsx/workbook/worksheet/cell.rb +552 -506
- data/lib/axlsx/workbook/worksheet/cell_serializer.rb +164 -164
- data/lib/axlsx/workbook/worksheet/cfvo.rb +60 -60
- data/lib/axlsx/workbook/worksheet/cfvos.rb +16 -18
- data/lib/axlsx/workbook/worksheet/col.rb +142 -145
- data/lib/axlsx/workbook/worksheet/col_breaks.rb +34 -35
- data/lib/axlsx/workbook/worksheet/color_scale.rb +108 -110
- data/lib/axlsx/workbook/worksheet/cols.rb +23 -23
- data/lib/axlsx/workbook/worksheet/comment.rb +90 -91
- data/lib/axlsx/workbook/worksheet/comments.rb +78 -82
- data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +81 -82
- data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +216 -220
- data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +23 -25
- data/lib/axlsx/workbook/worksheet/data_bar.rb +127 -129
- data/lib/axlsx/workbook/worksheet/data_validation.rb +266 -246
- data/lib/axlsx/workbook/worksheet/data_validations.rb +25 -28
- data/lib/axlsx/workbook/worksheet/date_time_converter.rb +28 -30
- data/lib/axlsx/workbook/worksheet/dimension.rb +65 -64
- data/lib/axlsx/workbook/worksheet/header_footer.rb +51 -52
- data/lib/axlsx/workbook/worksheet/icon_set.rb +80 -81
- data/lib/axlsx/workbook/worksheet/merged_cells.rb +37 -37
- data/lib/axlsx/workbook/worksheet/outline_pr.rb +32 -33
- data/lib/axlsx/workbook/worksheet/page_margins.rb +97 -97
- data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +42 -44
- data/lib/axlsx/workbook/worksheet/page_setup.rb +237 -240
- data/lib/axlsx/workbook/worksheet/pane.rb +138 -139
- data/lib/axlsx/workbook/worksheet/pivot_table.rb +332 -296
- data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +63 -66
- data/lib/axlsx/workbook/worksheet/pivot_tables.rb +23 -24
- data/lib/axlsx/workbook/worksheet/print_options.rb +38 -39
- data/lib/axlsx/workbook/worksheet/protected_range.rb +46 -47
- data/lib/axlsx/workbook/worksheet/protected_ranges.rb +37 -37
- data/lib/axlsx/workbook/worksheet/rich_text.rb +53 -55
- data/lib/axlsx/workbook/worksheet/rich_text_run.rb +266 -250
- data/lib/axlsx/workbook/worksheet/row.rb +173 -164
- data/lib/axlsx/workbook/worksheet/row_breaks.rb +32 -33
- data/lib/axlsx/workbook/worksheet/selection.rb +99 -101
- data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +28 -29
- data/lib/axlsx/workbook/worksheet/sheet_data.rb +25 -27
- data/lib/axlsx/workbook/worksheet/sheet_format_pr.rb +18 -18
- data/lib/axlsx/workbook/worksheet/sheet_pr.rb +87 -87
- data/lib/axlsx/workbook/worksheet/sheet_protection.rb +117 -118
- data/lib/axlsx/workbook/worksheet/sheet_view.rb +206 -213
- data/lib/axlsx/workbook/worksheet/table.rb +100 -102
- data/lib/axlsx/workbook/worksheet/table_style_info.rb +48 -49
- data/lib/axlsx/workbook/worksheet/tables.rb +34 -34
- data/lib/axlsx/workbook/worksheet/worksheet.rb +857 -786
- data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +58 -58
- data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +59 -58
- data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +73 -74
- data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +38 -38
- data/lib/axlsx.rb +218 -185
- data/lib/caxlsx.rb +1 -2
- data/lib/schema/dc.xsd +118 -118
- data/lib/schema/dcmitype.xsd +51 -51
- data/lib/schema/dcterms.xsd +331 -331
- data/lib/schema/dml-chartDrawing.xsd +146 -146
- data/lib/schema/dml-compatibility.xsd +14 -14
- data/lib/schema/dml-lockedCanvas.xsd +11 -11
- data/lib/schema/dml-main.xsd +3048 -3048
- data/lib/schema/dml-picture.xsd +23 -23
- data/lib/schema/dml-spreadsheetDrawing.xsd +185 -185
- data/lib/schema/dml-wordprocessingDrawing.xsd +185 -185
- data/lib/schema/shared-additionalCharacteristics.xsd +28 -28
- data/lib/schema/shared-bibliography.xsd +144 -144
- data/lib/schema/shared-commonSimpleTypes.xsd +166 -166
- data/lib/schema/shared-customXmlDataProperties.xsd +25 -25
- data/lib/schema/shared-customXmlSchemaProperties.xsd +18 -18
- data/lib/schema/shared-documentPropertiesCustom.xsd +59 -59
- data/lib/schema/shared-documentPropertiesExtended.xsd +56 -56
- data/lib/schema/shared-documentPropertiesVariantTypes.xsd +195 -195
- data/lib/schema/shared-relationshipReference.xsd +25 -25
- data/lib/schema/vml-main.xsd +569 -569
- data/lib/schema/vml-officeDrawing.xsd +509 -509
- data/lib/schema/vml-presentationDrawing.xsd +12 -12
- data/lib/schema/vml-spreadsheetDrawing.xsd +108 -108
- data/lib/schema/vml-wordprocessingDrawing.xsd +96 -96
- data/lib/schema/xml.xsd +116 -116
- metadata +5 -252
- data/test/benchmark.rb +0 -72
- data/test/content_type/tc_content_type.rb +0 -76
- data/test/content_type/tc_default.rb +0 -16
- data/test/content_type/tc_override.rb +0 -14
- data/test/doc_props/tc_app.rb +0 -43
- data/test/doc_props/tc_core.rb +0 -42
- data/test/drawing/tc_area_chart.rb +0 -39
- data/test/drawing/tc_area_series.rb +0 -71
- data/test/drawing/tc_axes.rb +0 -8
- data/test/drawing/tc_axis.rb +0 -112
- data/test/drawing/tc_bar_3D_chart.rb +0 -86
- data/test/drawing/tc_bar_chart.rb +0 -86
- data/test/drawing/tc_bar_series.rb +0 -46
- data/test/drawing/tc_bubble_chart.rb +0 -44
- data/test/drawing/tc_bubble_series.rb +0 -21
- data/test/drawing/tc_cat_axis.rb +0 -31
- data/test/drawing/tc_cat_axis_data.rb +0 -27
- data/test/drawing/tc_chart.rb +0 -123
- data/test/drawing/tc_d_lbls.rb +0 -57
- data/test/drawing/tc_data_source.rb +0 -23
- data/test/drawing/tc_drawing.rb +0 -80
- data/test/drawing/tc_graphic_frame.rb +0 -27
- data/test/drawing/tc_hyperlink.rb +0 -64
- data/test/drawing/tc_line_3d_chart.rb +0 -47
- data/test/drawing/tc_line_chart.rb +0 -39
- data/test/drawing/tc_line_series.rb +0 -71
- data/test/drawing/tc_marker.rb +0 -44
- data/test/drawing/tc_named_axis_data.rb +0 -27
- data/test/drawing/tc_num_data.rb +0 -31
- data/test/drawing/tc_num_val.rb +0 -29
- data/test/drawing/tc_one_cell_anchor.rb +0 -66
- data/test/drawing/tc_pic.rb +0 -103
- data/test/drawing/tc_picture_locking.rb +0 -72
- data/test/drawing/tc_pie_3D_chart.rb +0 -28
- data/test/drawing/tc_pie_series.rb +0 -33
- data/test/drawing/tc_scaling.rb +0 -36
- data/test/drawing/tc_scatter_chart.rb +0 -48
- data/test/drawing/tc_scatter_series.rb +0 -74
- data/test/drawing/tc_ser_axis.rb +0 -31
- data/test/drawing/tc_series.rb +0 -23
- data/test/drawing/tc_series_title.rb +0 -54
- data/test/drawing/tc_str_data.rb +0 -18
- data/test/drawing/tc_str_val.rb +0 -30
- data/test/drawing/tc_title.rb +0 -70
- data/test/drawing/tc_two_cell_anchor.rb +0 -36
- data/test/drawing/tc_val_axis.rb +0 -24
- data/test/drawing/tc_view_3D.rb +0 -54
- data/test/drawing/tc_vml_drawing.rb +0 -25
- data/test/drawing/tc_vml_shape.rb +0 -106
- data/test/fixtures/image1.gif +0 -0
- data/test/fixtures/image1.jpeg +0 -0
- data/test/fixtures/image1.jpg +0 -0
- data/test/fixtures/image1.png +0 -0
- data/test/fixtures/image1_fake.jpg +0 -0
- data/test/profile.rb +0 -24
- data/test/rels/tc_relationship.rb +0 -52
- data/test/rels/tc_relationships.rb +0 -37
- data/test/stylesheet/tc_border.rb +0 -37
- data/test/stylesheet/tc_border_pr.rb +0 -32
- data/test/stylesheet/tc_cell_alignment.rb +0 -81
- data/test/stylesheet/tc_cell_protection.rb +0 -29
- data/test/stylesheet/tc_cell_style.rb +0 -57
- data/test/stylesheet/tc_color.rb +0 -43
- data/test/stylesheet/tc_dxf.rb +0 -81
- data/test/stylesheet/tc_fill.rb +0 -18
- data/test/stylesheet/tc_font.rb +0 -133
- data/test/stylesheet/tc_gradient_fill.rb +0 -72
- data/test/stylesheet/tc_gradient_stop.rb +0 -31
- data/test/stylesheet/tc_num_fmt.rb +0 -30
- data/test/stylesheet/tc_pattern_fill.rb +0 -43
- data/test/stylesheet/tc_styles.rb +0 -309
- data/test/stylesheet/tc_table_style.rb +0 -44
- data/test/stylesheet/tc_table_style_element.rb +0 -45
- data/test/stylesheet/tc_table_styles.rb +0 -29
- data/test/stylesheet/tc_xf.rb +0 -120
- data/test/tc_axlsx.rb +0 -109
- data/test/tc_helper.rb +0 -10
- data/test/tc_package.rb +0 -317
- data/test/util/tc_mime_type_utils.rb +0 -13
- data/test/util/tc_serialized_attributes.rb +0 -19
- data/test/util/tc_simple_typed_list.rb +0 -77
- data/test/util/tc_validators.rb +0 -210
- data/test/workbook/tc_defined_name.rb +0 -49
- data/test/workbook/tc_shared_strings_table.rb +0 -59
- data/test/workbook/tc_workbook.rb +0 -165
- data/test/workbook/tc_workbook_view.rb +0 -50
- data/test/workbook/worksheet/auto_filter/tc_auto_filter.rb +0 -38
- data/test/workbook/worksheet/auto_filter/tc_filter_column.rb +0 -76
- data/test/workbook/worksheet/auto_filter/tc_filters.rb +0 -50
- data/test/workbook/worksheet/tc_break.rb +0 -49
- data/test/workbook/worksheet/tc_cell.rb +0 -465
- data/test/workbook/worksheet/tc_cfvo.rb +0 -31
- data/test/workbook/worksheet/tc_col.rb +0 -93
- data/test/workbook/worksheet/tc_color_scale.rb +0 -58
- data/test/workbook/worksheet/tc_comment.rb +0 -72
- data/test/workbook/worksheet/tc_comments.rb +0 -57
- data/test/workbook/worksheet/tc_conditional_formatting.rb +0 -224
- data/test/workbook/worksheet/tc_data_bar.rb +0 -46
- data/test/workbook/worksheet/tc_data_validation.rb +0 -265
- data/test/workbook/worksheet/tc_date_time_converter.rb +0 -124
- data/test/workbook/worksheet/tc_header_footer.rb +0 -151
- data/test/workbook/worksheet/tc_icon_set.rb +0 -45
- data/test/workbook/worksheet/tc_outline_pr.rb +0 -19
- data/test/workbook/worksheet/tc_page_margins.rb +0 -97
- data/test/workbook/worksheet/tc_page_set_up_pr.rb +0 -15
- data/test/workbook/worksheet/tc_page_setup.rb +0 -143
- data/test/workbook/worksheet/tc_pane.rb +0 -54
- data/test/workbook/worksheet/tc_pivot_table.rb +0 -180
- data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +0 -62
- data/test/workbook/worksheet/tc_print_options.rb +0 -72
- data/test/workbook/worksheet/tc_protected_range.rb +0 -17
- data/test/workbook/worksheet/tc_rich_text.rb +0 -44
- data/test/workbook/worksheet/tc_rich_text_run.rb +0 -173
- data/test/workbook/worksheet/tc_row.rb +0 -160
- data/test/workbook/worksheet/tc_selection.rb +0 -55
- data/test/workbook/worksheet/tc_sheet_calc_pr.rb +0 -18
- data/test/workbook/worksheet/tc_sheet_format_pr.rb +0 -88
- data/test/workbook/worksheet/tc_sheet_pr.rb +0 -49
- data/test/workbook/worksheet/tc_sheet_protection.rb +0 -117
- data/test/workbook/worksheet/tc_sheet_view.rb +0 -214
- data/test/workbook/worksheet/tc_table.rb +0 -77
- data/test/workbook/worksheet/tc_table_style_info.rb +0 -53
- data/test/workbook/worksheet/tc_worksheet.rb +0 -632
- data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +0 -55
data/lib/axlsx.rb
CHANGED
|
@@ -1,185 +1,218 @@
|
|
|
1
|
-
|
|
2
|
-
require '
|
|
3
|
-
require '
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
require 'axlsx/util/
|
|
7
|
-
require 'axlsx/util/
|
|
8
|
-
require 'axlsx/util/
|
|
9
|
-
require 'axlsx/util/
|
|
10
|
-
require 'axlsx/util/
|
|
11
|
-
require 'axlsx/util/
|
|
12
|
-
require 'axlsx/util/
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
require 'axlsx/doc_props/
|
|
18
|
-
require 'axlsx/
|
|
19
|
-
require 'axlsx/
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
require 'axlsx/
|
|
23
|
-
require 'axlsx/
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
require '
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
require '
|
|
31
|
-
require 'time'
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
#
|
|
44
|
-
#
|
|
45
|
-
#
|
|
46
|
-
#
|
|
47
|
-
|
|
48
|
-
#
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
#
|
|
52
|
-
def self.
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
#
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
#
|
|
80
|
-
def self.
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
#
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
# @param[
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
1
|
+
require 'htmlentities'
|
|
2
|
+
require 'axlsx/version.rb'
|
|
3
|
+
require 'marcel'
|
|
4
|
+
|
|
5
|
+
require 'axlsx/util/simple_typed_list.rb'
|
|
6
|
+
require 'axlsx/util/constants.rb'
|
|
7
|
+
require 'axlsx/util/validators.rb'
|
|
8
|
+
require 'axlsx/util/accessors.rb'
|
|
9
|
+
require 'axlsx/util/serialized_attributes'
|
|
10
|
+
require 'axlsx/util/options_parser'
|
|
11
|
+
require 'axlsx/util/mime_type_utils'
|
|
12
|
+
require 'axlsx/util/zip_command'
|
|
13
|
+
|
|
14
|
+
require 'axlsx/stylesheet/styles.rb'
|
|
15
|
+
|
|
16
|
+
require 'axlsx/doc_props/app.rb'
|
|
17
|
+
require 'axlsx/doc_props/core.rb'
|
|
18
|
+
require 'axlsx/content_type/content_type.rb'
|
|
19
|
+
require 'axlsx/rels/relationships.rb'
|
|
20
|
+
|
|
21
|
+
require 'axlsx/drawing/drawing.rb'
|
|
22
|
+
require 'axlsx/workbook/workbook.rb'
|
|
23
|
+
require 'axlsx/package.rb'
|
|
24
|
+
# required gems
|
|
25
|
+
require 'nokogiri'
|
|
26
|
+
require 'zip'
|
|
27
|
+
|
|
28
|
+
# core dependencies
|
|
29
|
+
require 'bigdecimal'
|
|
30
|
+
require 'set'
|
|
31
|
+
require 'time'
|
|
32
|
+
|
|
33
|
+
begin
|
|
34
|
+
if Gem.loaded_specs.has_key?("axlsx_styler")
|
|
35
|
+
raise StandardError.new("Please remove `axlsx_styler` from your Gemfile, the associated functionality is now built-in to `caxlsx` directly.")
|
|
36
|
+
end
|
|
37
|
+
rescue
|
|
38
|
+
# Do nothing
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# xlsx generation with charts, images, automated column width, customizable styles
|
|
42
|
+
# and full schema validation. Axlsx excels at helping you generate beautiful
|
|
43
|
+
# Office Open XML Spreadsheet documents without having to understand the entire
|
|
44
|
+
# ECMA specification. Check out the README for some examples of how easy it is.
|
|
45
|
+
# Best of all, you can validate your xlsx file before serialization so you know
|
|
46
|
+
# for sure that anything generated is going to load on your client's machine.
|
|
47
|
+
module Axlsx
|
|
48
|
+
# I am a very big fan of activesupports instance_values method, but do not want to require nor include the entire
|
|
49
|
+
# library just for this one method.
|
|
50
|
+
#
|
|
51
|
+
# Defining as a class method on Axlsx to refrain from monkeypatching Object for all users of this gem.
|
|
52
|
+
def self.instance_values_for(object)
|
|
53
|
+
Hash[object.instance_variables.map { |name| [name.to_s[1..-1], object.instance_variable_get(name)] }]
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# determines the cell range for the items provided
|
|
57
|
+
def self.cell_range(cells, absolute = true)
|
|
58
|
+
return "" unless cells.first.is_a? Cell
|
|
59
|
+
|
|
60
|
+
first_cell, last_cell = cells.minmax_by(&:pos)
|
|
61
|
+
reference = "#{first_cell.reference(absolute)}:#{last_cell.reference(absolute)}"
|
|
62
|
+
if absolute
|
|
63
|
+
escaped_name = first_cell.row.worksheet.name.gsub ''', "''"
|
|
64
|
+
"'#{escaped_name}'!#{reference}"
|
|
65
|
+
else
|
|
66
|
+
reference
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# sorts the array of cells provided to start from the minimum x,y to
|
|
71
|
+
# the maximum x.y#
|
|
72
|
+
# @param [Array] cells
|
|
73
|
+
# @return [Array]
|
|
74
|
+
def self.sort_cells(cells)
|
|
75
|
+
cells.sort_by(&:pos)
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
# global reference html entity encoding
|
|
79
|
+
# @return [HtmlEntities]
|
|
80
|
+
def self.coder
|
|
81
|
+
@@coder ||= ::HTMLEntities.new
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
# returns the x, y position of a cell
|
|
85
|
+
def self.name_to_indices(name)
|
|
86
|
+
raise ArgumentError, 'invalid cell name' unless name.size > 1
|
|
87
|
+
|
|
88
|
+
letters_str = name[/[A-Z]+/]
|
|
89
|
+
|
|
90
|
+
# capitalization?!?
|
|
91
|
+
v = letters_str.reverse.chars.reduce({ :base => 1, :i => 0 }) do |val, c|
|
|
92
|
+
val[:i] += ((c.bytes.first - 64) * val[:base])
|
|
93
|
+
|
|
94
|
+
val[:base] *= 26
|
|
95
|
+
|
|
96
|
+
next val
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
col_index = (v[:i] - 1)
|
|
100
|
+
|
|
101
|
+
numbers_str = name[/[1-9][0-9]*/]
|
|
102
|
+
|
|
103
|
+
row_index = (numbers_str.to_i - 1)
|
|
104
|
+
|
|
105
|
+
return [col_index, row_index]
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
# converts the column index into alphabetical values.
|
|
109
|
+
# @note This follows the standard spreadsheet convention of naming columns A to Z, followed by AA to AZ etc.
|
|
110
|
+
# @return [String]
|
|
111
|
+
def self.col_ref(index)
|
|
112
|
+
chars = ''
|
|
113
|
+
while index >= 26 do
|
|
114
|
+
index, char = index.divmod(26)
|
|
115
|
+
chars.prepend((char + 65).chr)
|
|
116
|
+
index -= 1
|
|
117
|
+
end
|
|
118
|
+
chars.prepend((index + 65).chr)
|
|
119
|
+
chars
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
# @return [String] The alpha(column)numeric(row) reference for this sell.
|
|
123
|
+
# @example Relative Cell Reference
|
|
124
|
+
# ws.rows.first.cells.first.r #=> "A1"
|
|
125
|
+
def self.cell_r(c_index, r_index)
|
|
126
|
+
col_ref(c_index) << (r_index + 1).to_s
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
# Creates an array of individual cell references based on an excel reference range.
|
|
130
|
+
# @param [String] range A cell range, for example A1:D5
|
|
131
|
+
# @return [Array]
|
|
132
|
+
def self.range_to_a(range)
|
|
133
|
+
range.match(/^(\w+?\d+)\:(\w+?\d+)$/)
|
|
134
|
+
start_col, start_row = name_to_indices($1)
|
|
135
|
+
end_col, end_row = name_to_indices($2)
|
|
136
|
+
(start_row..end_row).to_a.map do |row_num|
|
|
137
|
+
(start_col..end_col).to_a.map do |col_num|
|
|
138
|
+
cell_r(col_num, row_num)
|
|
139
|
+
end
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
# performs the increadible feat of changing snake_case to CamelCase
|
|
144
|
+
# @param [String] s The snake case string to camelize
|
|
145
|
+
# @return [String]
|
|
146
|
+
def self.camel(s = "", all_caps = true)
|
|
147
|
+
s = s.to_s
|
|
148
|
+
s = s.capitalize if all_caps
|
|
149
|
+
s.gsub(/_(.)/) { $1.upcase }
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
# returns the provided string with all invalid control charaters
|
|
153
|
+
# removed.
|
|
154
|
+
# @param [String] str The string to process
|
|
155
|
+
# @return [String]
|
|
156
|
+
def self.sanitize(str)
|
|
157
|
+
if str.frozen?
|
|
158
|
+
str.delete(CONTROL_CHARS)
|
|
159
|
+
else
|
|
160
|
+
str.delete!(CONTROL_CHARS)
|
|
161
|
+
str
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
# If value is boolean return 1 or 0
|
|
166
|
+
# else return the value
|
|
167
|
+
# @param [Object] value The value to process
|
|
168
|
+
# @return [Object]
|
|
169
|
+
def self.booleanize(value)
|
|
170
|
+
if value == true || value == false
|
|
171
|
+
value ? 1 : 0
|
|
172
|
+
else
|
|
173
|
+
value
|
|
174
|
+
end
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
# utility method for performing a deep merge on a Hash
|
|
178
|
+
# @param [Hash] Hash to merge into
|
|
179
|
+
# @param [Hash] Hash to be added
|
|
180
|
+
def self.hash_deep_merge(first_hash, second_hash)
|
|
181
|
+
first_hash.merge(second_hash) do |key, this_val, other_val|
|
|
182
|
+
if this_val.is_a?(Hash) && other_val.is_a?(Hash)
|
|
183
|
+
Axlsx.hash_deep_merge(this_val, other_val)
|
|
184
|
+
else
|
|
185
|
+
other_val
|
|
186
|
+
end
|
|
187
|
+
end
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
# Instructs the serializer to not try to escape cell value input.
|
|
191
|
+
# This will give you a huge speed bonus, but if you content has <, > or other xml character data
|
|
192
|
+
# the workbook will be invalid and excel will complain.
|
|
193
|
+
def self.trust_input
|
|
194
|
+
@trust_input ||= false
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
# @param[Boolean] trust_me A boolean value indicating if the cell value content is to be trusted
|
|
198
|
+
# @return [Boolean]
|
|
199
|
+
# @see Axlsx::trust_input
|
|
200
|
+
def self.trust_input=(trust_me)
|
|
201
|
+
@trust_input = trust_me
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
# Whether to treat values starting with an equals sign as formulas or as literal strings.
|
|
205
|
+
# Allowing user-generated data to be interpreted as formulas is a security risk.
|
|
206
|
+
# See https://www.owasp.org/index.php/CSV_Injection for details.
|
|
207
|
+
# @return [Boolean]
|
|
208
|
+
def self.escape_formulas
|
|
209
|
+
!defined?(@escape_formulas) || @escape_formulas.nil? ? false : @escape_formulas
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
# Sets whether to treat values starting with an equals sign as formulas or as literal strings.
|
|
213
|
+
# @param [Boolean] value The value to set.
|
|
214
|
+
def self.escape_formulas=(value)
|
|
215
|
+
Axlsx.validate_boolean(value)
|
|
216
|
+
@escape_formulas = value
|
|
217
|
+
end
|
|
218
|
+
end
|
data/lib/caxlsx.rb
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
require 'axlsx.rb'
|
|
1
|
+
require 'axlsx.rb'
|
data/lib/schema/dc.xsd
CHANGED
|
@@ -1,118 +1,118 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
|
3
|
-
xmlns="http://purl.org/dc/elements/1.1/"
|
|
4
|
-
targetNamespace="http://purl.org/dc/elements/1.1/"
|
|
5
|
-
elementFormDefault="qualified"
|
|
6
|
-
attributeFormDefault="unqualified">
|
|
7
|
-
|
|
8
|
-
<xs:annotation>
|
|
9
|
-
<xs:documentation xml:lang="en">
|
|
10
|
-
DCMES 1.1 XML Schema
|
|
11
|
-
XML Schema for http://purl.org/dc/elements/1.1/ namespace
|
|
12
|
-
|
|
13
|
-
Created 2003-04-02
|
|
14
|
-
|
|
15
|
-
Created by
|
|
16
|
-
|
|
17
|
-
Tim Cole (t-cole3@uiuc.edu)
|
|
18
|
-
Tom Habing (thabing@uiuc.edu)
|
|
19
|
-
Jane Hunter (jane@dstc.edu.au)
|
|
20
|
-
Pete Johnston (p.johnston@ukoln.ac.uk),
|
|
21
|
-
Carl Lagoze (lagoze@cs.cornell.edu)
|
|
22
|
-
|
|
23
|
-
This schema declares XML elements for the 15 DC elements from the
|
|
24
|
-
http://purl.org/dc/elements/1.1/ namespace.
|
|
25
|
-
|
|
26
|
-
It defines a complexType SimpleLiteral which permits mixed content
|
|
27
|
-
and makes the xml:lang attribute available. It disallows child elements by
|
|
28
|
-
use of minOcccurs/maxOccurs.
|
|
29
|
-
|
|
30
|
-
However, this complexType does permit the derivation of other complexTypes
|
|
31
|
-
which would permit child elements.
|
|
32
|
-
|
|
33
|
-
All elements are declared as substitutable for the abstract element any,
|
|
34
|
-
which means that the default type for all elements is dc:SimpleLiteral.
|
|
35
|
-
|
|
36
|
-
</xs:documentation>
|
|
37
|
-
|
|
38
|
-
</xs:annotation>
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
<xs:import namespace="http://www.w3.org/XML/1998/namespace"
|
|
42
|
-
schemaLocation="xml.xsd">
|
|
43
|
-
</xs:import>
|
|
44
|
-
|
|
45
|
-
<xs:complexType name="SimpleLiteral">
|
|
46
|
-
<xs:annotation>
|
|
47
|
-
<xs:documentation xml:lang="en">
|
|
48
|
-
This is the default type for all of the DC elements.
|
|
49
|
-
It permits text content only with optional
|
|
50
|
-
xml:lang attribute.
|
|
51
|
-
Text is allowed because mixed="true", but sub-elements
|
|
52
|
-
are disallowed because minOccurs="0" and maxOccurs="0"
|
|
53
|
-
are on the xs:any tag.
|
|
54
|
-
|
|
55
|
-
This complexType allows for restriction or extension permitting
|
|
56
|
-
child elements.
|
|
57
|
-
</xs:documentation>
|
|
58
|
-
</xs:annotation>
|
|
59
|
-
|
|
60
|
-
<xs:complexContent mixed="true">
|
|
61
|
-
<xs:restriction base="xs:anyType">
|
|
62
|
-
<xs:sequence>
|
|
63
|
-
<xs:any processContents="lax" minOccurs="0" maxOccurs="0"/>
|
|
64
|
-
</xs:sequence>
|
|
65
|
-
<xs:attribute ref="xml:lang" use="optional"/>
|
|
66
|
-
</xs:restriction>
|
|
67
|
-
</xs:complexContent>
|
|
68
|
-
</xs:complexType>
|
|
69
|
-
|
|
70
|
-
<xs:element name="any" type="SimpleLiteral" abstract="true"/>
|
|
71
|
-
|
|
72
|
-
<xs:element name="title" substitutionGroup="any"/>
|
|
73
|
-
<xs:element name="creator" substitutionGroup="any"/>
|
|
74
|
-
<xs:element name="subject" substitutionGroup="any"/>
|
|
75
|
-
<xs:element name="description" substitutionGroup="any"/>
|
|
76
|
-
<xs:element name="publisher" substitutionGroup="any"/>
|
|
77
|
-
<xs:element name="contributor" substitutionGroup="any"/>
|
|
78
|
-
<xs:element name="date" substitutionGroup="any"/>
|
|
79
|
-
<xs:element name="type" substitutionGroup="any"/>
|
|
80
|
-
<xs:element name="format" substitutionGroup="any"/>
|
|
81
|
-
<xs:element name="identifier" substitutionGroup="any"/>
|
|
82
|
-
<xs:element name="source" substitutionGroup="any"/>
|
|
83
|
-
<xs:element name="language" substitutionGroup="any"/>
|
|
84
|
-
<xs:element name="relation" substitutionGroup="any"/>
|
|
85
|
-
<xs:element name="coverage" substitutionGroup="any"/>
|
|
86
|
-
<xs:element name="rights" substitutionGroup="any"/>
|
|
87
|
-
|
|
88
|
-
<xs:group name="elementsGroup">
|
|
89
|
-
<xs:annotation>
|
|
90
|
-
<xs:documentation xml:lang="en">
|
|
91
|
-
This group is included as a convenience for schema authors
|
|
92
|
-
who need to refer to all the elements in the
|
|
93
|
-
http://purl.org/dc/elements/1.1/ namespace.
|
|
94
|
-
</xs:documentation>
|
|
95
|
-
</xs:annotation>
|
|
96
|
-
|
|
97
|
-
<xs:sequence>
|
|
98
|
-
<xs:choice minOccurs="0" maxOccurs="unbounded">
|
|
99
|
-
<xs:element ref="any"/>
|
|
100
|
-
</xs:choice>
|
|
101
|
-
</xs:sequence>
|
|
102
|
-
</xs:group>
|
|
103
|
-
|
|
104
|
-
<xs:complexType name="elementContainer">
|
|
105
|
-
<xs:annotation>
|
|
106
|
-
<xs:documentation xml:lang="en">
|
|
107
|
-
This complexType is included as a convenience for schema authors who need to define a root
|
|
108
|
-
or container element for all of the DC elements.
|
|
109
|
-
</xs:documentation>
|
|
110
|
-
</xs:annotation>
|
|
111
|
-
|
|
112
|
-
<xs:choice>
|
|
113
|
-
<xs:group ref="elementsGroup"/>
|
|
114
|
-
</xs:choice>
|
|
115
|
-
</xs:complexType>
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
</xs:schema>
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
|
3
|
+
xmlns="http://purl.org/dc/elements/1.1/"
|
|
4
|
+
targetNamespace="http://purl.org/dc/elements/1.1/"
|
|
5
|
+
elementFormDefault="qualified"
|
|
6
|
+
attributeFormDefault="unqualified">
|
|
7
|
+
|
|
8
|
+
<xs:annotation>
|
|
9
|
+
<xs:documentation xml:lang="en">
|
|
10
|
+
DCMES 1.1 XML Schema
|
|
11
|
+
XML Schema for http://purl.org/dc/elements/1.1/ namespace
|
|
12
|
+
|
|
13
|
+
Created 2003-04-02
|
|
14
|
+
|
|
15
|
+
Created by
|
|
16
|
+
|
|
17
|
+
Tim Cole (t-cole3@uiuc.edu)
|
|
18
|
+
Tom Habing (thabing@uiuc.edu)
|
|
19
|
+
Jane Hunter (jane@dstc.edu.au)
|
|
20
|
+
Pete Johnston (p.johnston@ukoln.ac.uk),
|
|
21
|
+
Carl Lagoze (lagoze@cs.cornell.edu)
|
|
22
|
+
|
|
23
|
+
This schema declares XML elements for the 15 DC elements from the
|
|
24
|
+
http://purl.org/dc/elements/1.1/ namespace.
|
|
25
|
+
|
|
26
|
+
It defines a complexType SimpleLiteral which permits mixed content
|
|
27
|
+
and makes the xml:lang attribute available. It disallows child elements by
|
|
28
|
+
use of minOcccurs/maxOccurs.
|
|
29
|
+
|
|
30
|
+
However, this complexType does permit the derivation of other complexTypes
|
|
31
|
+
which would permit child elements.
|
|
32
|
+
|
|
33
|
+
All elements are declared as substitutable for the abstract element any,
|
|
34
|
+
which means that the default type for all elements is dc:SimpleLiteral.
|
|
35
|
+
|
|
36
|
+
</xs:documentation>
|
|
37
|
+
|
|
38
|
+
</xs:annotation>
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
<xs:import namespace="http://www.w3.org/XML/1998/namespace"
|
|
42
|
+
schemaLocation="xml.xsd">
|
|
43
|
+
</xs:import>
|
|
44
|
+
|
|
45
|
+
<xs:complexType name="SimpleLiteral">
|
|
46
|
+
<xs:annotation>
|
|
47
|
+
<xs:documentation xml:lang="en">
|
|
48
|
+
This is the default type for all of the DC elements.
|
|
49
|
+
It permits text content only with optional
|
|
50
|
+
xml:lang attribute.
|
|
51
|
+
Text is allowed because mixed="true", but sub-elements
|
|
52
|
+
are disallowed because minOccurs="0" and maxOccurs="0"
|
|
53
|
+
are on the xs:any tag.
|
|
54
|
+
|
|
55
|
+
This complexType allows for restriction or extension permitting
|
|
56
|
+
child elements.
|
|
57
|
+
</xs:documentation>
|
|
58
|
+
</xs:annotation>
|
|
59
|
+
|
|
60
|
+
<xs:complexContent mixed="true">
|
|
61
|
+
<xs:restriction base="xs:anyType">
|
|
62
|
+
<xs:sequence>
|
|
63
|
+
<xs:any processContents="lax" minOccurs="0" maxOccurs="0"/>
|
|
64
|
+
</xs:sequence>
|
|
65
|
+
<xs:attribute ref="xml:lang" use="optional"/>
|
|
66
|
+
</xs:restriction>
|
|
67
|
+
</xs:complexContent>
|
|
68
|
+
</xs:complexType>
|
|
69
|
+
|
|
70
|
+
<xs:element name="any" type="SimpleLiteral" abstract="true"/>
|
|
71
|
+
|
|
72
|
+
<xs:element name="title" substitutionGroup="any"/>
|
|
73
|
+
<xs:element name="creator" substitutionGroup="any"/>
|
|
74
|
+
<xs:element name="subject" substitutionGroup="any"/>
|
|
75
|
+
<xs:element name="description" substitutionGroup="any"/>
|
|
76
|
+
<xs:element name="publisher" substitutionGroup="any"/>
|
|
77
|
+
<xs:element name="contributor" substitutionGroup="any"/>
|
|
78
|
+
<xs:element name="date" substitutionGroup="any"/>
|
|
79
|
+
<xs:element name="type" substitutionGroup="any"/>
|
|
80
|
+
<xs:element name="format" substitutionGroup="any"/>
|
|
81
|
+
<xs:element name="identifier" substitutionGroup="any"/>
|
|
82
|
+
<xs:element name="source" substitutionGroup="any"/>
|
|
83
|
+
<xs:element name="language" substitutionGroup="any"/>
|
|
84
|
+
<xs:element name="relation" substitutionGroup="any"/>
|
|
85
|
+
<xs:element name="coverage" substitutionGroup="any"/>
|
|
86
|
+
<xs:element name="rights" substitutionGroup="any"/>
|
|
87
|
+
|
|
88
|
+
<xs:group name="elementsGroup">
|
|
89
|
+
<xs:annotation>
|
|
90
|
+
<xs:documentation xml:lang="en">
|
|
91
|
+
This group is included as a convenience for schema authors
|
|
92
|
+
who need to refer to all the elements in the
|
|
93
|
+
http://purl.org/dc/elements/1.1/ namespace.
|
|
94
|
+
</xs:documentation>
|
|
95
|
+
</xs:annotation>
|
|
96
|
+
|
|
97
|
+
<xs:sequence>
|
|
98
|
+
<xs:choice minOccurs="0" maxOccurs="unbounded">
|
|
99
|
+
<xs:element ref="any"/>
|
|
100
|
+
</xs:choice>
|
|
101
|
+
</xs:sequence>
|
|
102
|
+
</xs:group>
|
|
103
|
+
|
|
104
|
+
<xs:complexType name="elementContainer">
|
|
105
|
+
<xs:annotation>
|
|
106
|
+
<xs:documentation xml:lang="en">
|
|
107
|
+
This complexType is included as a convenience for schema authors who need to define a root
|
|
108
|
+
or container element for all of the DC elements.
|
|
109
|
+
</xs:documentation>
|
|
110
|
+
</xs:annotation>
|
|
111
|
+
|
|
112
|
+
<xs:choice>
|
|
113
|
+
<xs:group ref="elementsGroup"/>
|
|
114
|
+
</xs:choice>
|
|
115
|
+
</xs:complexType>
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
</xs:schema>
|