Revision 03558478
| b/webodf/lib/dom/RelaxNG.js | ||
|---|---|---|
| 148 | 148 |
if (e.length === 1 && (name === "choice" || name === "group" || |
| 149 | 149 |
name === "interleave")) {
|
| 150 | 150 |
name = e[0].name; |
| 151 |
names = e[0].names; |
|
| 151 | 152 |
a = e[0].a; |
| 152 | 153 |
text = e[0].text; |
| 153 | 154 |
e = e[0].e; |
| ... | ... | |
| 259 | 260 |
runtime.log(err); |
| 260 | 261 |
return err; |
| 261 | 262 |
} |
| 262 |
//runtime.log(JSON.stringify(start, null, " "));
|
|
| 263 |
// runtime.log(JSON.stringify(start, null, " "));
|
|
| 263 | 264 |
return null; |
| 264 | 265 |
} |
| 265 | 266 |
return main(); |
| ... | ... | |
| 389 | 390 |
return [new RelaxNGParseError("Found " + node.nodeName +
|
| 390 | 391 |
" instead of " + elementdef.names + ".", node)]; |
| 391 | 392 |
} |
| 393 |
//runtime.log(p.slice(0, depth) + qName(node)); |
|
| 392 | 394 |
// the right element was found, now parse the contents |
| 393 | 395 |
if (walker.firstChild()) {
|
| 394 | 396 |
// currentNode now points to the first child node of this element |
| ... | ... | |
| 480 | 482 |
* @param elementdef |
| 481 | 483 |
* @param walker |
| 482 | 484 |
* @param {Element} element
|
| 485 |
* @return {Array.<RelaxNGParseError>}
|
|
| 486 |
*/ |
|
| 487 |
function validateText(elementdef, walker, element) {
|
|
| 488 |
var /**@type{Node}*/ node = walker.currentNode,
|
|
| 489 |
/**@type{number}*/ type = node ? node.nodeType : 0,
|
|
| 490 |
error = null; |
|
| 491 |
// find the next element, skip text nodes with only whitespace |
|
| 492 |
while (type !== 3) {
|
|
| 493 |
if (type === 1) {
|
|
| 494 |
return [new RelaxNGParseError("Element not allowd here.", element)];
|
|
| 495 |
} |
|
| 496 |
node = walker.nextSibling(); |
|
| 497 |
type = node ? node.nodeType : 0; |
|
| 498 |
} |
|
| 499 |
walker.nextSibling(); |
|
| 500 |
return null; |
|
| 501 |
} |
|
| 502 |
/** |
|
| 503 |
* @param elementdef |
|
| 504 |
* @param walker |
|
| 505 |
* @param {Element} element
|
|
| 483 | 506 |
* @param {string=} data
|
| 484 | 507 |
* @return {Array.<RelaxNGParseError>}
|
| 485 | 508 |
*/ |
| ... | ... | |
| 487 | 510 |
element, data) {
|
| 488 | 511 |
var name = elementdef.name, err = null; |
| 489 | 512 |
if (name === "text") {
|
| 490 |
throw "text not implemented.";
|
|
| 513 |
err = validateText(elementdef, walker, element);
|
|
| 491 | 514 |
} else if (name === "data") {
|
| 492 | 515 |
err = null; // data not implemented |
| 493 | 516 |
} else if (name === "value") {
|
| 494 | 517 |
if (data !== elementdef.text) {
|
| 495 |
err = [new RelaxNGParseError("Wrong value, should be " +
|
|
| 496 |
elementdef.text, element)]; |
|
| 518 |
err = [new RelaxNGParseError("Wrong value, should be '" +
|
|
| 519 |
elementdef.text + "', not '" + data + "'", element)];
|
|
| 497 | 520 |
} |
| 498 | 521 |
} else if (name === "list") {
|
| 499 | 522 |
err = null; // list not implemented |
Also available in: Unified diff