[xml] RelaxNG bug?



Hello libxml2 folks,

The following minimal example validates with Jing but not libxml2 (git
version from today):

test.xml:
<?xml version="1.0" encoding="UTF-8"?>
<a b="0%"/>

schema.rng:
<?xml version="1.0" encoding="UTF-8"?>
<grammar
  xmlns="http://relaxng.org/ns/structure/1.0";
  datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes";>

  <start>
    <element name="a">
      <attribute name="b">
        <list>
          <choice>
            <ref name="percent"/>
            <value>super</value>
            <value>sub</value>
          </choice>
          <optional>
            <ref name="percent"/>
          </optional>
        </list>
      </attribute>
    </element>
  </start>

  <define name="percent">
    <data type="string">
      <param name="pattern">-?([0-9]+(\.[0-9]*)?|\.[0-9]+)%</param>
    </data>
  </define>

</grammar>

[astan pyret test]$ xmllint --version
xmllint: using libxml version 20706-GITv2.7.6-8-g7946137
   compiled with: Threads Tree Output Push Reader Patterns Writer
SAXv1 FTP HTTP DTDValid HTML Legacy C14N Catalog XPath XPointer
XInclude Iconv ISO8859X Unicode Regexps Automata Expr Schemas
Schematron Modules Debug Zlib
[astan pyret test]$ xmllint --relaxng schema.rng test.xml
<?xml version="1.0" encoding="UTF-8"?>
<a b="0%"/>
Unimplemented block at relaxng.c:8948
test.xml:2: element a: Relax-NG validity error : Element a failed to
validate attributes
test.xml fails to validate

It validates if I remove the entire <optional> from the <list>.

Any ideas? The code at relaxng.c:8948 indicates that this is a TODO.
Is that true or is this a real bug and the validator has been put into
an inconsistent state?

Best regards,
Elvis Stansvik



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]