aboutsummaryrefslogtreecommitdiff
path: root/rpkid/rpki/relaxng.py
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2008-05-22 17:14:18 +0000
committerRob Austein <sra@hactrn.net>2008-05-22 17:14:18 +0000
commitefc5613903579cf375a5495fb78e03235d780d44 (patch)
tree8ea655c711b295ae9b0a91b295bd4f3827581d28 /rpkid/rpki/relaxng.py
parent89f81964ea79346583388e86053a5726f9256a20 (diff)
Finally figured out how to write a RelaxNG schema that allows
arbitrary XML to be passed within the <report_error/> element. This was the original intent, I just didn't know how to do it until now. Having finally figured out how to do this, am checking it in for posterity but will then revert to something simpler. svn path=/rpkid/left-right-protocol-samples.xml; revision=1812
Diffstat (limited to 'rpkid/rpki/relaxng.py')
-rw-r--r--rpkid/rpki/relaxng.py37
1 files changed, 29 insertions, 8 deletions
diff --git a/rpkid/rpki/relaxng.py b/rpkid/rpki/relaxng.py
index 866cdba1..38a8d0c0 100644
--- a/rpkid/rpki/relaxng.py
+++ b/rpkid/rpki/relaxng.py
@@ -933,19 +933,41 @@ left_right = lxml.etree.RelaxNG(lxml.etree.fromstring('''<?xml version="1.0" enc
</element>
</define>
<!-- <report_error/> element -->
+ <define name="error">
+ <data type="token">
+ <param name="maxLength">1024</param>
+ </data>
+ </define>
+ <define name="any">
+ <element>
+ <anyName/>
+ <zeroOrMore>
+ <attribute>
+ <anyName/>
+ </attribute>
+ </zeroOrMore>
+ <choice>
+ <text/>
+ <zeroOrMore>
+ <ref name="any"/>
+ </zeroOrMore>
+ </choice>
+ </element>
+ </define>
<define name="report_error_reply">
<element name="report_error">
<ref name="tag"/>
<ref name="self_id"/>
<attribute name="error_code">
- <data type="token">
- <param name="maxLength">1024</param>
- </data>
+ <ref name="error"/>
</attribute>
<optional>
- <data type="string">
- <param name="maxLength">512000</param>
- </data>
+ <choice>
+ <text/>
+ <zeroOrMore>
+ <ref name="any"/>
+ </zeroOrMore>
+ </choice>
</optional>
</element>
</define>
@@ -1215,7 +1237,7 @@ up_down = lxml.etree.RelaxNG(lxml.etree.fromstring('''<?xml version="1.0" encodi
## Parsed RelaxNG publication schema
publication = lxml.etree.RelaxNG(lxml.etree.fromstring('''<?xml version="1.0" encoding="UTF-8"?>
<!--
- $Id: publication-schema.rnc 1810 2008-05-22 14:46:48Z sra $
+ $Id: publication-schema.rnc 1811 2008-05-22 16:39:41Z sra $
RelaxNG Schema for RPKI publication protocol.
@@ -1805,7 +1827,6 @@ publication = lxml.etree.RelaxNG(lxml.etree.fromstring('''<?xml version="1.0" en
<param name="maxLength">1024</param>
</data>
</define>
- <!-- any = element * { (attribute * { text } | text | any*)* } -->
<define name="any">
<element>
<anyName/>