Skip to content

Commit 0fef4de

Browse files
committed
- Split of combiner3d into combiner_ac3d and combiner_dc3d
- Split of instance_combiner3d into instance_combiner_ac3d and instance_combiner_dc3d - Adjusted schematron rules - Added schematron rule to reject any tag not defined in PVC 2.0 schema - Adjusted example file Closes #49
1 parent 189734e commit 0fef4de

File tree

4 files changed

+171
-55
lines changed

4 files changed

+171
-55
lines changed

Examples/05 - VerySimpleFixedPVC2_with_electrical_layout.pvc2

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -108,10 +108,10 @@
108108
</pv:inverters>
109109
<!-- List of AC combiners -->
110110
<pv:combiners_ac>
111-
<!-- combiner tag -->
112-
<pv:combiner_ac id="CombinerModel1">
111+
<!-- combiner_ac tag -->
112+
<pv:combiner_ac id="CombinerACModel1">
113113
<pv:manufacturer>Generic</pv:manufacturer>
114-
<pv:name>Generic combiner</pv:name>
114+
<pv:name>Generic AC combiner</pv:name>
115115
<pv:input_count>3</pv:input_count>
116116
</pv:combiner_ac>
117117
</pv:combiners_ac>
@@ -166,7 +166,7 @@
166166
<pv:cable_to_parent url="#ACCableModel1" length="5" id="cableInstance1" />
167167
<pv:inputs>
168168
<!-- instance_combiner_ac tag, the AC combiner that will combine the 3 strings -->
169-
<pv:instance_combiner_ac url="#CombinerModel1" id="combinerInstance">
169+
<pv:instance_combiner_ac url="#CombinerACModel1" id="combinerAcInstance">
170170
<!-- Cable between the AC combiner and the transformer -->
171171
<pv:cable_to_parent url="#ACCableModel1" length="10" id="cableInstance2" />
172172
<!-- inputs tag => the 3 inverters strings -->
@@ -444,27 +444,27 @@
444444
</technique>
445445
</extra>
446446
</geometry>
447-
<!-- We define the 3D model for combiners (contains the geometry of the combiner) -->
448-
<geometry id="Combiner3DModel">
447+
<!-- We define the 3D model for AC combiners (contains the geometry of the AC combiner) -->
448+
<geometry id="CombinerAC3DModel">
449449
<mesh>
450-
<source id="combiner_positions">
451-
<float_array id="combiner_positions_array" count="24">
450+
<source id="combiner_ac_positions">
451+
<float_array id="combiner_ac_positions_array" count="24">
452452
-100 -100 0 100 -100 0 100 100 0 -100 100 0
453453
-100 -100 120 100 -100 120 100 100 120 -100 100 120
454454
</float_array>
455455
<technique_common>
456-
<accessor source="#combiner_positions_array" count="8" stride="3">
456+
<accessor source="#combiner_ac_positions_array" count="8" stride="3">
457457
<param name="X" type="float" />
458458
<param name="Y" type="float" />
459459
<param name="Z" type="float" />
460460
</accessor>
461461
</technique_common>
462462
</source>
463-
<vertices id="combiner_vertices">
464-
<input semantic="POSITION" source="#combiner_positions" />
463+
<vertices id="combiner_ac_vertices">
464+
<input semantic="POSITION" source="#combiner_ac_positions" />
465465
</vertices>
466466
<polygons count="6">
467-
<input semantic="VERTEX" source="#combiner_vertices" offset="0" />
467+
<input semantic="VERTEX" source="#combiner_ac_vertices" offset="0" />
468468
<p>0 1 2 3</p>
469469
<p>4 5 6 7</p>
470470
<p>0 1 5 4</p>
@@ -475,8 +475,8 @@
475475
</mesh>
476476
<extra>
477477
<technique profile="PVCollada-2.0">
478-
<!-- combiner3d tag, references the combiner defined in components -->
479-
<pv:combiner3d combiner_id="CombinerModel1" />
478+
<!-- combiner_ac3d tag, references the combiner_ac defined in components -->
479+
<pv:combiner_ac3d combiner_ac_id="CombinerACModel1" />
480480
</technique>
481481
</extra>
482482
</geometry>
@@ -640,14 +640,14 @@
640640
</extra>
641641
</instance_geometry>
642642
</node>
643-
<!-- We instantiate the combiner -->
644-
<node id="Combiner3DNode" name="Combiner3DNode" sid="Combiner3DNode">
643+
<!-- We instantiate the AC combiner -->
644+
<node id="CombinerAC3DNode" name="CombinerAC3DNode" sid="CombinerAC3DNode">
645645
<translate>600 -900 0</translate>
646-
<instance_geometry url="#Combiner3DModel">
646+
<instance_geometry url="#CombinerAC3DModel">
647647
<extra>
648648
<technique profile="PVCollada-2.0">
649-
<!-- instance_combiner3d tag, references the corresponding instance_combiner of the circuit -->
650-
<pv:instance_combiner3d instance_combiner_id="combinerInstance" />
649+
<!-- instance_combiner_ac3d tag, references the corresponding instance_combiner_ac of the circuit -->
650+
<pv:instance_combiner_ac3d instance_combiner_ac_id="combinerAcInstance" />
651651
</technique>
652652
</extra>
653653
</instance_geometry>

schema/pvcollada_references_2.0.sch

Lines changed: 54 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -71,14 +71,27 @@
7171
</rule>
7272
</pattern>
7373

74-
<!-- Pattern: Validate instance_combiner3d references -->
75-
<pattern id="instance_combiner3d_references">
76-
<rule context="pv:instance_combiner3d">
74+
<!-- Pattern: Validate instance_combiner_ac3d references -->
75+
<pattern id="instance_combiner_ac3d_references">
76+
<rule context="pv:instance_combiner_ac3d">
7777
<let name="instance_geom" value="ancestor::collada:instance_geometry"/>
7878
<let name="geom_url" value="substring-after($instance_geom/@url, '#')"/>
7979
<let name="referenced_geom" value="//collada:geometry[@id=$geom_url]"/>
80-
<assert test="$referenced_geom//pv:combiner3d">
81-
instance_combiner3d must be in an instance_geometry that references a geometry containing a combiner3d element.
80+
<assert test="$referenced_geom//pv:combiner_ac3d">
81+
instance_combiner_ac3d must be in an instance_geometry that references a geometry containing a combiner_ac3d element.
82+
Referenced geometry: <value-of select="$geom_url"/>
83+
</assert>
84+
</rule>
85+
</pattern>
86+
87+
<!-- Pattern: Validate instance_combiner_dc3d references -->
88+
<pattern id="instance_combiner_dc3d_references">
89+
<rule context="pv:instance_combiner_dc3d">
90+
<let name="instance_geom" value="ancestor::collada:instance_geometry"/>
91+
<let name="geom_url" value="substring-after($instance_geom/@url, '#')"/>
92+
<let name="referenced_geom" value="//collada:geometry[@id=$geom_url]"/>
93+
<assert test="$referenced_geom//pv:combiner_dc3d">
94+
instance_combiner_dc3d must be in an instance_geometry that references a geometry containing a combiner_dc3d element.
8295
Referenced geometry: <value-of select="$geom_url"/>
8396
</assert>
8497
</rule>
@@ -145,13 +158,24 @@
145158
</rule>
146159
</pattern>
147160

148-
<!-- Pattern: Validate combiner3d component references -->
149-
<pattern id="combiner3d_component_references">
150-
<rule context="pv:combiner3d[@combiner_id]">
151-
<let name="combiner_ref" value="@combiner_id"/>
152-
<assert test="//pv:combiner_ac[@id=$combiner_ref] or //pv:combiner_dc[@id=$combiner_ref]">
153-
combiner3d element references non-existent combiner '<value-of select="$combiner_ref"/>'.
154-
Must reference a combiner_ac or combiner_dc defined in components.
161+
<!-- Pattern: Validate combiner_ac3d component references -->
162+
<pattern id="combiner_ac3d_component_references">
163+
<rule context="pv:combiner_ac3d[@combiner_ac_id]">
164+
<let name="combiner_ac_ref" value="@combiner_ac_id"/>
165+
<assert test="//pv:combiner_ac[@id=$combiner_ac_ref]">
166+
combiner_ac3d element references non-existent combiner_ac '<value-of select="$combiner_ac_ref"/>'.
167+
Must reference a combiner_ac defined in components.
168+
</assert>
169+
</rule>
170+
</pattern>
171+
172+
<!-- Pattern: Validate combiner_dc3d component references -->
173+
<pattern id="combiner_dc3d_component_references">
174+
<rule context="pv:combiner_dc3d[@combiner_dc_id]">
175+
<let name="combiner_dc_ref" value="@combiner_dc_id"/>
176+
<assert test="//pv:combiner_dc[@id=$combiner_dc_ref]">
177+
combiner_dc3d element references non-existent combiner_dc '<value-of select="$combiner_dc_ref"/>'.
178+
Must reference a combiner_dc defined in components.
155179
</assert>
156180
</rule>
157181
</pattern>
@@ -189,13 +213,24 @@
189213
</rule>
190214
</pattern>
191215

192-
<!-- Pattern: Validate instance_combiner3d circuit references -->
193-
<pattern id="instance_combiner3d_circuit_references">
194-
<rule context="pv:instance_combiner3d[@instance_combiner_id]">
195-
<let name="instance_ref" value="@instance_combiner_id"/>
196-
<assert test="//pv:instance_combiner_ac[@id=$instance_ref] or //pv:instance_combiner_dc[@id=$instance_ref]">
197-
instance_combiner3d element references non-existent combiner instance '<value-of select="$instance_ref"/>'.
198-
Must reference an instance_combiner_ac or instance_combiner_dc defined in the circuit.
216+
<!-- Pattern: Validate instance_combiner_ac3d circuit references -->
217+
<pattern id="instance_combiner_ac3d_circuit_references">
218+
<rule context="pv:instance_combiner_ac3d[@instance_combiner_ac_id]">
219+
<let name="instance_ref" value="@instance_combiner_ac_id"/>
220+
<assert test="//pv:instance_combiner_ac[@id=$instance_ref]">
221+
instance_combiner_ac3d element references non-existent combiner_ac instance '<value-of select="$instance_ref"/>'.
222+
Must reference an instance_combiner_ac defined in the circuit.
223+
</assert>
224+
</rule>
225+
</pattern>
226+
227+
<!-- Pattern: Validate instance_combiner_dc3d circuit references -->
228+
<pattern id="instance_combiner_dc3d_circuit_references">
229+
<rule context="pv:instance_combiner_dc3d[@instance_combiner_dc_id]">
230+
<let name="instance_ref" value="@instance_combiner_dc_id"/>
231+
<assert test="//pv:instance_combiner_dc[@id=$instance_ref]">
232+
instance_combiner_dc3d element references non-existent combiner_dc instance '<value-of select="$instance_ref"/>'.
233+
Must reference an instance_combiner_dc defined in the circuit.
199234
</assert>
200235
</rule>
201236
</pattern>

schema/pvcollada_schema_2.0.xsd

Lines changed: 36 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1161,29 +1161,56 @@ xmlns:collada="http://www.collada.org/2008/03/COLLADASchema">
11611161
</xs:attribute>
11621162
</xs:complexType>
11631163
</xs:element>
1164-
<xs:element name="combiner3d">
1164+
<xs:element name="combiner_ac3d">
11651165
<xs:annotation>
11661166
<xs:documentation>This tag should only appear in the extra/technique section of a Collada geometry tag to signal a 3D model
1167-
for a combiner.</xs:documentation>
1167+
for an AC combiner.</xs:documentation>
11681168
</xs:annotation>
11691169
<xs:complexType>
1170-
<xs:attribute name="combiner_id" type="xs:IDREF">
1170+
<xs:attribute name="combiner_ac_id" type="xs:IDREF">
11711171
<xs:annotation>
1172-
<xs:documentation>Id of the combiner defined in the components part</xs:documentation>
1172+
<xs:documentation>Id of the AC combiner defined in the components part</xs:documentation>
11731173
</xs:annotation>
11741174
</xs:attribute>
11751175
</xs:complexType>
11761176
</xs:element>
1177-
<xs:element name="instance_combiner3d">
1177+
<xs:element name="instance_combiner_ac3d">
11781178
<xs:annotation>
11791179
<xs:documentation>This tag should only appear in the extra/technique section of a Collada instance_geometry tag to signal a
1180-
3D instance of a combiner. The attribute url of the instance_geometry must reference a Collada geometry that is a model for a
1181-
combiner3d (has an combiner3d tag in its extra/technique tag).</xs:documentation>
1180+
3D instance of an AC combiner. The attribute url of the instance_geometry must reference a Collada geometry that is a model
1181+
for a combiner_ac3d (has an combiner_ac3d tag in its extra/technique tag).</xs:documentation>
11821182
</xs:annotation>
11831183
<xs:complexType>
1184-
<xs:attribute name="instance_combiner_id" type="xs:IDREF">
1184+
<xs:attribute name="instance_combiner_ac_id" type="xs:IDREF">
11851185
<xs:annotation>
1186-
<xs:documentation>Id of the instance_combiner defined in the circuit part</xs:documentation>
1186+
<xs:documentation>Id of the instance_combiner_ac defined in the circuit part</xs:documentation>
1187+
</xs:annotation>
1188+
</xs:attribute>
1189+
</xs:complexType>
1190+
</xs:element>
1191+
<xs:element name="combiner_dc3d">
1192+
<xs:annotation>
1193+
<xs:documentation>This tag should only appear in the extra/technique section of a Collada geometry tag to signal a 3D model
1194+
for an DC combiner.</xs:documentation>
1195+
</xs:annotation>
1196+
<xs:complexType>
1197+
<xs:attribute name="combiner_dc_id" type="xs:IDREF">
1198+
<xs:annotation>
1199+
<xs:documentation>Id of the DC combiner defined in the components part</xs:documentation>
1200+
</xs:annotation>
1201+
</xs:attribute>
1202+
</xs:complexType>
1203+
</xs:element>
1204+
<xs:element name="instance_combiner_dc3d">
1205+
<xs:annotation>
1206+
<xs:documentation>This tag should only appear in the extra/technique section of a Collada instance_geometry tag to signal a
1207+
3D instance of an DC combiner. The attribute url of the instance_geometry must reference a Collada geometry that is a model
1208+
for a combiner_dc3d (has an combiner_dc3d tag in its extra/technique tag).</xs:documentation>
1209+
</xs:annotation>
1210+
<xs:complexType>
1211+
<xs:attribute name="instance_combiner_dc_id" type="xs:IDREF">
1212+
<xs:annotation>
1213+
<xs:documentation>Id of the instance_combiner_dc defined in the circuit part</xs:documentation>
11871214
</xs:annotation>
11881215
</xs:attribute>
11891216
</xs:complexType>

0 commit comments

Comments
 (0)