Daniel Veillard <veillard(a)redhat.com> wrote on 04/06/2010 09:10:11 AM:
Please respond to veillard
On Mon, Apr 05, 2010 at 12:53:19PM -0400, Stefan Berger wrote:
> This patch adds a relaxng nwfilter schema along with a test that
> verifies all the test output XML against the schema. The input XMLs
> contain a lot of intentional out-of-range values that make them fail
the
> schema verification, so I am not verifying against those.
>
> Signed-off-by: Stefan Berger <stefanb(a)us.ibm.com>
> Signed-off-by: Gerhard Stenzel <gerhard.stenzel(a)de.ibm.com>
>
> ---
> docs/schemas/Makefile.am | 3
> docs/schemas/domain.rng | 31 +
> docs/schemas/nwfilter.rng | 783
> ++++++++++++++++++++++++++++++++++++++++++++++
> libvirt.spec.in | 1
> tests/Makefile.am | 4
> tests/nwfilterschematest | 11
> 6 files changed, 831 insertions(+), 2 deletions(-)
>
[...]
> + <define name="addrMAC">
> + <choice>
> + <!-- variable -->
> + <data type="string">
> + <param name="pattern">[\\$]{1}[a-zA-Z0-9_]+</param>
> + </data>
> +
> + <data type="string">
> + <param
> name="pattern">([a-fA-F0-9]{1,2}:){5}[a-fA-F0-9]{1,2}</param>
> + </data>
> + </choice>
> + </define>
Hum, can you explain why you get apparently 2 completely different
format values ranges here (and in a number of other types), I'm a bit
lost.
Every item in the network filter xml can be a variable like $MAC or $IP.
So for the schema to validate a srcmacaddr="$MAC" I needed to add the
above 'variable' pattern.
I had a lot of problems finding a way to require a $ as first letter and I
ended up having to use the [\\$]{1} construct. Also I could not find a
switch for non-case-sensitive string comparison like other regexes have
(?i) or \i for example... I suppose there is none.
[...]
> Index: libvirt-acl/docs/schemas/domain.rng
> ===================================================================
> --- libvirt-acl.orig/docs/schemas/domain.rng
> +++ libvirt-acl/docs/schemas/domain.rng
> @@ -894,6 +894,11 @@
> <optional>
> <ref name="address"/>
> </optional>
> + <optional>
> + <element name="filterref">
> + <ref name="filterref-node-attributes"/>
> + </element>
> + </optional>
> </interleave>
> </define>
> <!--
@@ -1577,6 +1582,22 @@
> </element>
> </define>
>
> + <define name="filterref-node-attributes">
> + <attribute name="filter">
> + <data type="NCName"/>
> + </attribute>
> + <optional>
> + <element name="parameter">
> + <attribute name="name">
> + <ref name="parameter-name"/>
> + </attribute>
> + <attribute name="value">
> + <ref name="parameter-value"/>
> + </attribute>
> + </element>
> + </optional>
> + </define>
> +
> <!--
Type library
>
> @@ -1737,4 +1758,14 @@
> <param name="pattern">[a-zA-Z0-9_\.\+\-/]+</param>
> </data>
> </define>
> + <define name="parameter-name">
> + <data type="string">
> + <param name="pattern">[a-zA-Z0-9_]+</param>
> + </data>
> + </define>
> + <define name="parameter-value">
> + <data type="string">
> + <param name="pattern">[a-zA-Z0-9_\.:]+</param>
> + </data>
> + </define>
> </grammar>
I just find parameter-name/parameter-value a bit too generic names,
if you could make them more specific to the task, like
filter-param-name / filter-param-value
but it's minor, and it's good to have updated schema and augmented
testing
Ok, so I will rename those two to the names you suggest. Should I post
again before pushing it to the repository?
Stefan
ACK
Daniel
--
Daniel Veillard | libxml Gnome XML XSLT toolkit
http://xmlsoft.org/
daniel(a)veillard.com | Rpmfind RPM search engine
http://rpmfind.net/
http://veillard.com/ | virtualization library
http://libvirt.org/