summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShaun McCance <shaunm@src.gnome.org>2007-03-27 18:22:57 +0000
committerShaun McCance <shaunm@src.gnome.org>2007-03-27 18:22:57 +0000
commitecae9f7d5226a941d946b9ce41567c0fe201a1f0 (patch)
tree1850ea19a58ac0c45cfbf8dfe88bd45595da9e08
parentf2f83d3add7382031b951dcc4b7a978d743ba6f1 (diff)
downloadgnome-doc-utils-ecae9f7d5226a941d946b9ce41567c0fe201a1f0.tar.gz
- Handle xsd: data types and list constructions
* rng/rnc2rng.awk: - Handle xsd: data types and list constructions svn path=/trunk/; revision=908
-rw-r--r--sandbox/mallard/ChangeLog5
-rw-r--r--sandbox/mallard/rng/rnc2rng.awk33
2 files changed, 37 insertions, 1 deletions
diff --git a/sandbox/mallard/ChangeLog b/sandbox/mallard/ChangeLog
index 7675e1f..d9f60b2 100644
--- a/sandbox/mallard/ChangeLog
+++ b/sandbox/mallard/ChangeLog
@@ -1,3 +1,8 @@
+2007-03-27 Shaun McCance <shaunm@gnome.org>
+
+ * rng/rnc2rng.awk:
+ - Handle xsd: data types and list constructions
+
2007-03-15 Shaun McCance <shaunm@gnome.org>
* spec/10minutes.xml:
diff --git a/sandbox/mallard/rng/rnc2rng.awk b/sandbox/mallard/rng/rnc2rng.awk
index 7fcf5bf..d4d7d96 100644
--- a/sandbox/mallard/rng/rnc2rng.awk
+++ b/sandbox/mallard/rng/rnc2rng.awk
@@ -86,6 +86,12 @@ function runline (line) {
tmp = tmp "</attribute>";
stack[--stack_i] = tmp;
}
+ else if (stack[stack_i - 1] == "<list>") {
+ tmp = stack[stack_i - 1] "\n";
+ tmp = tmp stack[stack_i] "\n";
+ tmp = tmp "</list>";
+ stack[--stack_i] = tmp;
+ }
}
if (paren_i == 0) {
mode = "top";
@@ -139,11 +145,36 @@ function runline (line) {
stack[++stack_i] = sprintf("<attribute name=\"%s\">", name);
runline(aft);
}
+ else if (substr(line, 1, 5) == "list ") {
+ aft = substr(line, 5);
+ sub(/^ */, "", aft);
+ stack[++stack_i] = "<list>";
+ runline(aft);
+ }
else if (match(line, /^text[^[:alpha:]]/)) {
stack[++stack_i] = "<text/>";
runline(substr(line, 5));
}
- else if (match(line, /^[[:alpha:]]/)) {
+ else if (substr(line, 1, 18) == "default namespace ") {
+ print "default namespace appeared out of context on line " FNR | "cat 1>&2";
+ error = 1;
+ exit 1
+ }
+ else if (substr(line, 1, 6) == "start ") {
+ print "start appeared out of context on line " FNR | "cat 1>&2";
+ error = 1;
+ exit 1
+ }
+ else if (match(line, /^xsd:[[:alpha:]_]/)) {
+ name = substr(line, 1);
+ sub(/^xsd:/, "", name);
+ sub(/[^[:alpha:]_]+.*/, "", name);
+ aft = substr(line, length(name) + 5);
+ stack[++stack_i] = sprintf("<data type=\"%s\" datatypeLibrary=\"http://www.w3.org/2001/XMLSchema-datatypes\"/>",
+ name);
+ runline(aft);
+ }
+ else if (match(line, /^[[:alpha:]_]/)) {
name = substr(line, 1);
sub(/[^[:alpha:]_]+.*/, "", name);
aft = substr(line, length(name) + 1);