diff options
-rw-r--r-- | relaxng.c | 16 | ||||
-rw-r--r-- | result/relaxng/anyName0_0 | 0 | ||||
-rw-r--r-- | result/relaxng/anyName0_0.err | 1 | ||||
-rw-r--r-- | result/relaxng/anyName0_err | 1 | ||||
-rw-r--r-- | result/relaxng/anyName0_valid | 0 | ||||
-rw-r--r-- | test/relaxng/anyName0.rng | 15 | ||||
-rw-r--r-- | test/relaxng/anyName0_0.xml | 1 |
7 files changed, 28 insertions, 6 deletions
@@ -5363,11 +5363,15 @@ xmlRelaxNGParseNameClass(xmlRelaxNGParserCtxtPtr ctxt, xmlNodePtr node, xmlNodePtr child; xmlRelaxNGDefinePtr last = NULL; - ret = xmlRelaxNGNewDefine(ctxt, node); - if (ret == NULL) - return (NULL); - ret->parent = def; - ret->type = XML_RELAXNG_CHOICE; + if (def->type == XML_RELAXNG_CHOICE) { + ret = def; + } else { + ret = xmlRelaxNGNewDefine(ctxt, node); + if (ret == NULL) + return (NULL); + ret->parent = def; + ret->type = XML_RELAXNG_CHOICE; + } if (node->children == NULL) { xmlRngPErr(ctxt, node, XML_RNGP_CHOICE_EMPTY, @@ -5379,7 +5383,7 @@ xmlRelaxNGParseNameClass(xmlRelaxNGParserCtxtPtr ctxt, xmlNodePtr node, tmp = xmlRelaxNGParseNameClass(ctxt, child, ret); if (tmp != NULL) { if (last == NULL) { - last = ret->nameClass = tmp; + last = tmp; } else { last->next = tmp; last = tmp; diff --git a/result/relaxng/anyName0_0 b/result/relaxng/anyName0_0 new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/result/relaxng/anyName0_0 diff --git a/result/relaxng/anyName0_0.err b/result/relaxng/anyName0_0.err new file mode 100644 index 00000000..f660c26d --- /dev/null +++ b/result/relaxng/anyName0_0.err @@ -0,0 +1 @@ +./test/relaxng/anyName0_0.xml validates diff --git a/result/relaxng/anyName0_err b/result/relaxng/anyName0_err new file mode 100644 index 00000000..ab6f08da --- /dev/null +++ b/result/relaxng/anyName0_err @@ -0,0 +1 @@ +./test/relaxng/anyName0.rng validates diff --git a/result/relaxng/anyName0_valid b/result/relaxng/anyName0_valid new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/result/relaxng/anyName0_valid diff --git a/test/relaxng/anyName0.rng b/test/relaxng/anyName0.rng new file mode 100644 index 00000000..9fc5ead0 --- /dev/null +++ b/test/relaxng/anyName0.rng @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?> +<grammar xmlns="http://relaxng.org/ns/structure/1.0"> + <start> + <element> + <choice> + <choice> + <name>a</name> + <name>b</name> + </choice> + <name>c</name> + </choice> + <empty/> + </element> + </start> +</grammar> diff --git a/test/relaxng/anyName0_0.xml b/test/relaxng/anyName0_0.xml new file mode 100644 index 00000000..fb08e36d --- /dev/null +++ b/test/relaxng/anyName0_0.xml @@ -0,0 +1 @@ +<b/> |