Skip to content

Commit a67dbc7

Browse files
committed
Separate raw changes into different schema for now
Signed-off-by: ruffsl <roxfoxpox@gmail.com>
1 parent 0dca9b3 commit a67dbc7

3 files changed

Lines changed: 66 additions & 18 deletions

File tree

sros2/scripts/dds_sql_to_sros2_policy.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -100,21 +100,24 @@ def df_to_dds_policy(df):
100100
def dds_policy_to_sros2_policy(dds_policy):
101101

102102
# Parse files
103-
policy_xsd = etree.XMLSchema(
103+
sros2_policy_xsd = etree.XMLSchema(
104104
etree.parse(
105105
get_policy_schema('policy.xsd')))
106-
demangle_xsl = etree.XSLT(
106+
dds_policy_xsd = etree.XMLSchema(
107+
etree.parse(
108+
get_transport_schema('dds', 'policy.xsd')))
109+
dds_demangle_xsl = etree.XSLT(
107110
etree.parse(
108111
get_transport_template('dds', 'demangle.xsl')))
109112

110-
# Validate policy schema
111-
policy_xsd.assertValid(dds_policy)
113+
# Validate input schema
114+
dds_policy_xsd.assertValid(dds_policy)
112115

113116
# Transform policy
114-
sros2_policy = demangle_xsl(dds_policy)
117+
sros2_policy = dds_demangle_xsl(dds_policy)
115118

116-
# Validate policy schema
117-
policy_xsd.assertValid(sros2_policy)
119+
# Validate output schema
120+
sros2_policy_xsd.assertValid(sros2_policy)
118121

119122
return sros2_policy
120123

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<xs:schema
3+
xmlns:xs="http://www.w3.org/2001/XMLSchema"
4+
xmlns:xml="http://www.w3.org/XML/1998/namespace"
5+
elementFormDefault="qualified" attributeFormDefault="unqualified">
6+
<xs:import namespace="http://www.w3.org/XML/1998/namespace"
7+
schemaLocation="http://www.w3.org/2001/03/xml.xsd" />
8+
<!-- TODO: Use namespaces for xs:import so schemas can be DRY -->
9+
10+
<xs:element name="policy" type="Policy" />
11+
<xs:complexType name="Policy">
12+
<xs:sequence minOccurs="1" maxOccurs="1">
13+
<xs:element name="profiles" type="Profiles" />
14+
</xs:sequence>
15+
<xs:attribute name="version" type="xs:string" use="required" />
16+
</xs:complexType>
17+
18+
<xs:complexType name="Profiles">
19+
<xs:sequence minOccurs="1" maxOccurs="unbounded">
20+
<xs:element name="profile" type="Profile" />
21+
</xs:sequence>
22+
</xs:complexType>
23+
24+
<xs:complexType name="Profile">
25+
<xs:sequence minOccurs="0" maxOccurs="unbounded">
26+
<xs:choice minOccurs="1" maxOccurs="1">
27+
<xs:element name="raws" minOccurs="1" type="RawExpressionList" />
28+
</xs:choice>
29+
</xs:sequence>
30+
<xs:attribute name="ns" type="xs:string" use="required" />
31+
<xs:attribute name="node" type="xs:string" use="required" />
32+
<xs:attribute ref="xml:base" />
33+
</xs:complexType>
34+
35+
<xs:complexType name="RawExpressionList">
36+
<xs:sequence minOccurs="1" maxOccurs="unbounded">
37+
<xs:element name="raw" type="Expression" />
38+
</xs:sequence>
39+
<xs:attribute name="publish" type="RuleQualifier" use="optional" />
40+
<xs:attribute name="relay" type="RuleQualifier" use="optional" />
41+
<xs:attribute name="subscribe" type="RuleQualifier" use="optional" />
42+
<xs:attribute ref="xml:base" />
43+
</xs:complexType>
44+
45+
<xs:simpleType name="Expression">
46+
<xs:restriction base="xs:string" />
47+
</xs:simpleType>
48+
49+
<xs:simpleType name="RuleQualifier">
50+
<xs:restriction base="xs:string">
51+
<xs:enumeration value="ALLOW" />
52+
<xs:enumeration value="DENY" />
53+
</xs:restriction>
54+
</xs:simpleType>
55+
56+
</xs:schema>

sros2/sros2/policy/schemas/policy.xsd

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
<xs:complexType name="Profile">
2525
<xs:sequence minOccurs="0" maxOccurs="unbounded">
2626
<xs:choice minOccurs="1" maxOccurs="1">
27-
<xs:element name="raws" minOccurs="1" type="RawExpressionList" />
2827
<xs:element name="topics" minOccurs="1" type="TopicExpressionList" />
2928
<xs:element name="services" minOccurs="1" type="ServicesExpressionList" />
3029
<xs:element name="actions" minOccurs="1" type="ActionsExpressionList" />
@@ -35,16 +34,6 @@
3534
<xs:attribute ref="xml:base" />
3635
</xs:complexType>
3736

38-
<xs:complexType name="RawExpressionList">
39-
<xs:sequence minOccurs="1" maxOccurs="unbounded">
40-
<xs:element name="raw" type="Expression" />
41-
</xs:sequence>
42-
<xs:attribute name="publish" type="RuleQualifier" use="optional" />
43-
<xs:attribute name="relay" type="RuleQualifier" use="optional" />
44-
<xs:attribute name="subscribe" type="RuleQualifier" use="optional" />
45-
<xs:attribute ref="xml:base" />
46-
</xs:complexType>
47-
4837
<xs:complexType name="TopicExpressionList">
4938
<xs:sequence minOccurs="1" maxOccurs="unbounded">
5039
<xs:element name="topic" type="Expression" />

0 commit comments

Comments
 (0)