Re: [Cluster-devel] [PATCH] config/tools/xml: validate resulting cluster.rng with relaxng.rng

2013-02-07 Thread Fabio M. Di Nitto
Hi Jan,

On 2/6/2013 9:47 PM, Jan Pokorný wrote:
 Doing so will guarantee the file is valid RELAX NG schema, not just
 a valid XML.
 
 Validating schema, relaxng.rng, was obtained directly from [1] and
 matches directly to a version bundled with xmlcopyeditor in Fedora 17.
 The same (modulo VCS headers, comments and spacing details) can be
 obtained by combining schema as in the specification [2] and its
 errata [3].
 
 [1] http://relaxng.org/relaxng.rng
 [2] http://relaxng.org/spec-20011203.html
 [3] http://relaxng.org/spec-20011203-errata.html

this looks like a good idea, but i have one question.

Is there a specific reason why we need to ship/embed the file with our
tarball? How bad is it to require the one installed on a system?

I can see it´s rather stable and hardly updated, but i prefer to avoid
duplication if we can.

Fabio

 
 Signed-off-by: Jan Pokorný jpoko...@redhat.com
 ---
  config/tools/xml/Makefile |   2 +-
  config/tools/xml/ccs_update_schema.in |   3 +-
  config/tools/xml/relaxng.rng  | 335 
 ++
  3 files changed, 338 insertions(+), 2 deletions(-)
  create mode 100644 config/tools/xml/relaxng.rng
 
 diff --git a/config/tools/xml/Makefile b/config/tools/xml/Makefile
 index 3c9e97c..a86eb01 100644
 --- a/config/tools/xml/Makefile
 +++ b/config/tools/xml/Makefile
 @@ -7,7 +7,7 @@ TARGET4 = cluster.rng
  
  SBINDIRT = $(TARGET1) $(TARGET2) $(TARGET3)
  SHAREDIRSYMT = $(TARGET4)
 -RELAXNGDIRT = cluster.rng.in.head cluster.rng.in.tail
 +RELAXNGDIRT = cluster.rng.in.head cluster.rng.in.tail relaxng.rng
  
  all: $(TARGET1) $(TARGET2) $(TARGET3) $(TARGET4)
  
 diff --git a/config/tools/xml/ccs_update_schema.in 
 b/config/tools/xml/ccs_update_schema.in
 index a5aa351..16ce9f7 100644
 --- a/config/tools/xml/ccs_update_schema.in
 +++ b/config/tools/xml/ccs_update_schema.in
 @@ -316,7 +316,8 @@ build_schema() {
   return 1
   }
  
 - xmllint --noout $outputdir/cluster.rng || {
 + xmllint --noout --relaxng $rngdir/relaxng.rng $outputdir/cluster.rng \
 +   || {
   echo generated schema does not pass xmllint validation 2
   return 1
   }



Re: [Cluster-devel] [PATCH] config/tools/xml: validate resulting cluster.rng with relaxng.rng

2013-02-07 Thread Jan Pokorný
Hello ,

On 07/02/13 09:24 +0100, Fabio M. Di Nitto wrote:
 Hi Jan,
 
 On 2/6/2013 9:47 PM, Jan Pokorný wrote:
 Doing so will guarantee the file is valid RELAX NG schema, not just
 a valid XML.
 
 Validating schema, relaxng.rng, was obtained directly from [1] and
 matches directly to a version bundled with xmlcopyeditor in Fedora 17.
 The same (modulo VCS headers, comments and spacing details) can be
 obtained by combining schema as in the specification [2] and its
 errata [3].
 
 [1] http://relaxng.org/relaxng.rng
 [2] http://relaxng.org/spec-20011203.html
 [3] http://relaxng.org/spec-20011203-errata.html
 
 this looks like a good idea, but i have one question.
 
 Is there a specific reason why we need to ship/embed the file with our
 tarball? How bad is it to require the one installed on a system?

It is not bad at all, but you can hardly find it system-wide.  AFAIK
there is no standard in packaging such standalone single files
anywhere yet (see also, e.g., JavaScript libraries, everything is
usually bundled).  Once there is a wide-spread standard (if ever)
where such files are located within the distributions, relaxng.rng
can be dropped and dependency can be added.

 I can see it´s rather stable and hardly updated, but i prefer to avoid
 duplication if we can.

I share the same intention, however current situation does not seem
to be offering any other choice.

-- 
Jan



[Cluster-devel] [PATCH] config/tools/xml: validate resulting cluster.rng with relaxng.rng

2013-02-06 Thread Jan Pokorný
Doing so will guarantee the file is valid RELAX NG schema, not just
a valid XML.

Validating schema, relaxng.rng, was obtained directly from [1] and
matches directly to a version bundled with xmlcopyeditor in Fedora 17.
The same (modulo VCS headers, comments and spacing details) can be
obtained by combining schema as in the specification [2] and its
errata [3].

[1] http://relaxng.org/relaxng.rng
[2] http://relaxng.org/spec-20011203.html
[3] http://relaxng.org/spec-20011203-errata.html

Signed-off-by: Jan Pokorný jpoko...@redhat.com
---
 config/tools/xml/Makefile |   2 +-
 config/tools/xml/ccs_update_schema.in |   3 +-
 config/tools/xml/relaxng.rng  | 335 ++
 3 files changed, 338 insertions(+), 2 deletions(-)
 create mode 100644 config/tools/xml/relaxng.rng

diff --git a/config/tools/xml/Makefile b/config/tools/xml/Makefile
index 3c9e97c..a86eb01 100644
--- a/config/tools/xml/Makefile
+++ b/config/tools/xml/Makefile
@@ -7,7 +7,7 @@ TARGET4 = cluster.rng
 
 SBINDIRT = $(TARGET1) $(TARGET2) $(TARGET3)
 SHAREDIRSYMT = $(TARGET4)
-RELAXNGDIRT = cluster.rng.in.head cluster.rng.in.tail
+RELAXNGDIRT = cluster.rng.in.head cluster.rng.in.tail relaxng.rng
 
 all: $(TARGET1) $(TARGET2) $(TARGET3) $(TARGET4)
 
diff --git a/config/tools/xml/ccs_update_schema.in 
b/config/tools/xml/ccs_update_schema.in
index a5aa351..16ce9f7 100644
--- a/config/tools/xml/ccs_update_schema.in
+++ b/config/tools/xml/ccs_update_schema.in
@@ -316,7 +316,8 @@ build_schema() {
return 1
}
 
-   xmllint --noout $outputdir/cluster.rng || {
+   xmllint --noout --relaxng $rngdir/relaxng.rng $outputdir/cluster.rng \
+ || {
echo generated schema does not pass xmllint validation 2
return 1
}
diff --git a/config/tools/xml/relaxng.rng b/config/tools/xml/relaxng.rng
new file mode 100644
index 000..ee6fbde
--- /dev/null
+++ b/config/tools/xml/relaxng.rng
@@ -0,0 +1,335 @@
+?xml version=1.0?
+!-- RELAX NG for RELAX NG --
+!-- $Id: relaxng.rng,v 1.31 2002/05/30 06:07:43 jjc Exp $ --
+grammar datatypeLibrary=http://www.w3.org/2001/XMLSchema-datatypes;
+ ns=http://relaxng.org/ns/structure/1.0;
+ xmlns=http://relaxng.org/ns/structure/1.0;
+  start
+ref name=pattern/
+  /start
+
+  define name=pattern
+choice
+  element name=element
+choice
+  attribute name=name
+data type=QName/
+  /attribute
+  ref name=open-name-class/
+/choice
+ref name=common-atts/
+ref name=open-patterns/
+  /element
+  element name=attribute
+ref name=common-atts/
+choice
+ attribute name=name
+   data type=QName/
+ /attribute
+  ref name=open-name-class/
+/choice
+interleave
+  ref name=other/
+  optional
+ref name=pattern/
+  /optional
+/interleave
+  /element
+  element name=group
+ref name=common-atts/
+ref name=open-patterns/
+  /element
+  element name=interleave
+ref name=common-atts/
+ref name=open-patterns/
+  /element
+  element name=choice
+ref name=common-atts/
+ref name=open-patterns/
+  /element
+  element name=optional
+ref name=common-atts/
+ref name=open-patterns/
+  /element
+  element name=zeroOrMore
+ref name=common-atts/
+ref name=open-patterns/
+  /element
+  element name=oneOrMore
+ref name=common-atts/
+ref name=open-patterns/
+  /element
+  element name=list
+ref name=common-atts/
+ref name=open-patterns/
+  /element
+  element name=mixed
+ref name=common-atts/
+ref name=open-patterns/
+  /element
+  element name=ref
+attribute name=name
+  data type=NCName/
+/attribute
+ref name=common-atts/
+ref name=other/
+  /element
+  element name=parentRef
+attribute name=name
+  data type=NCName/
+/attribute
+ref name=common-atts/
+ref name=other/
+  /element
+  element name=empty
+ref name=common-atts/
+ref name=other/
+  /element
+  element name=text
+ref name=common-atts/
+ref name=other/
+  /element
+  element name=value
+optional
+  attribute name=type
+data type=NCName/
+  /attribute
+/optional
+ref name=common-atts/
+text/
+  /element
+  element name=data
+attribute name=type
+  data type=NCName/
+/attribute
+ref name=common-atts/
+interleave
+  ref name=other/
+  group
+   zeroOrMore
+ element name=param
+   attribute name=name
+ data type=NCName/
+   /attribute
+ref name=common-atts/
+