From 29f20f2785a3d93241241f8df4a7afa68376e169 Mon Sep 17 00:00:00 2001 From: Stef Busking Date: Mon, 20 Jun 2022 16:26:09 +0200 Subject: [PATCH] Improve grammar This improves a few parse errors and optimizes / simplifies a few grammar rules using new prsc combinators. --- package.json | 2 +- src/dom-parsing/grammar.ts | 318 +++---- src/dom-parsing/parsingAlgorithms.ts | 4 +- .../xmlConformance.tests.ts.snap | 776 +++++++++--------- test/dom-parsing/parseXmlDocument.tests.ts | 12 +- 5 files changed, 571 insertions(+), 541 deletions(-) diff --git a/package.json b/package.json index 4c8f826..ff6a183 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ "npm-run-all": "^4.1.5", "parse5": "^7.0.0", "prettier": "^2.6.2", - "prsc": "^3.1.0", + "prsc": "^3.3.0", "rimraf": "^3.0.2", "rollup": "^2.75.1", "rollup-plugin-sourcemaps": "^0.6.3", diff --git a/src/dom-parsing/grammar.ts b/src/dom-parsing/grammar.ts index b353a6b..14e05e8 100644 --- a/src/dom-parsing/grammar.ts +++ b/src/dom-parsing/grammar.ts @@ -5,6 +5,7 @@ import { consume, cut, delimited, + dispatch, except, filter, filterUndefined, @@ -21,6 +22,8 @@ import { preceded, range, recognize, + sequence, + sequenceConsumed, star, starConsumed, then, @@ -213,7 +216,7 @@ const Name = recognize(preceded(NameStartChar, codepoints(isValidNameChar))); export const CompleteName = complete(Name); -const NCName = filter(Name, (name) => !name.includes(':'), ['name must not contain colon']); +const NCName = filter(Name, (name) => !name.includes(':'), ['name must not contain colon'], true); // [6] Names ::= Name (#x20 Name)* // const Names = then(Name, star(preceded(SPACE, Name)), (first, next) => [first, ...next]); @@ -245,7 +248,8 @@ const CharRef: Parser = withPosition( ), ]), (cp) => isValidChar(cp), - ['character reference must reference a valid character'] + ['character reference must reference a valid character'], + true ), (cp) => ({ type: ParserEventType.CharRef, cp }) ) @@ -275,6 +279,7 @@ const PEReference: Parser = withPosition( // [9] EntityValue ::= '"' ([^%&"] | PEReference | Reference)* '"' // | "'" ([^%&'] | PEReference | Reference)* "'" const PERCENT_CP = 0x25; +const AMPERSAND_CP = 0x26; const EntityValue = or([ delimited( DOUBLE_QUOTE, @@ -324,48 +329,57 @@ const EntityValue = or([ // | "'" ([^<&'] | Reference)* "'" const DOUBLE_QUOTE_CP = 0x22; const SINGLE_QUOTE_CP = 0x27; -const AttValue: Parser = or([ - delimited( - DOUBLE_QUOTE, - star( - or([ - recognize( - codepoints( - (cp) => - cp !== ANGLE_BRACKET_OPEN_CP && - cp !== AMPERSAND_CP && - cp !== DOUBLE_QUOTE_CP && - isValidChar(cp), - [] +const AttValue: Parser = dispatch( + { + [DOUBLE_QUOTE_CP]: delimited( + DOUBLE_QUOTE, + star( + dispatch( + { + [AMPERSAND_CP]: Reference, + }, + recognize( + codepoints( + (cp) => + cp !== ANGLE_BRACKET_OPEN_CP && + cp !== AMPERSAND_CP && + cp !== DOUBLE_QUOTE_CP && + isValidChar(cp), + [] + ) ) - ), - Reference, - ]) + ) + ), + DOUBLE_QUOTE, + true ), - DOUBLE_QUOTE, - true - ), - delimited( - SINGLE_QUOTE, - star( - or([ - recognize( - codepoints( - (cp) => - cp !== ANGLE_BRACKET_OPEN_CP && - cp !== AMPERSAND_CP && - cp !== SINGLE_QUOTE_CP && - isValidChar(cp), - [] + [SINGLE_QUOTE_CP]: delimited( + SINGLE_QUOTE, + star( + dispatch( + { + [AMPERSAND_CP]: Reference, + }, + recognize( + codepoints( + (cp) => + cp !== ANGLE_BRACKET_OPEN_CP && + cp !== AMPERSAND_CP && + cp !== SINGLE_QUOTE_CP && + isValidChar(cp), + [] + ) ) - ), - Reference, - ]) + ) + ), + SINGLE_QUOTE, + true ), - SINGLE_QUOTE, - true - ), -]); + }, + undefined, + 0, + ['quoted attribute value'] +); export const EntityReplacementTextInLiteral = complete( star( @@ -396,7 +410,8 @@ const SystemLiteral = filter( ), ]), (systemId) => !systemId.includes('#'), - ['system identifier must not contain a fragment identifier'] + ['system identifier must not contain a fragment identifier'], + true ); // [13] PubidChar ::= #x20 | #xD | #xA | [a-zA-Z0-9] | [-'()+,./:=?;!*#@$_%] @@ -437,7 +452,6 @@ const PubidLiteral = or([ // CharData is only ever used as optional, it doesn't make sense to have it accept the empty string // For efficiency, hardcode the disallowed codepoints const ANGLE_BRACKET_OPEN_CP = 0x3c; -const AMPERSAND_CP = 0x26; const SQUARE_BRACKET_CLOSE_CP = 0x5d; const CharData: Parser = recognize( plusConsumed( @@ -481,9 +495,12 @@ const Comment: Parser = map( ); // [17] PITarget ::= Name - (('X' | 'x') ('M' | 'm') ('L' | 'l')) // Namespaces spec makes this an NCName -const PITarget = filter(NCName, (target) => target.toLowerCase() !== 'xml', [ - 'processing instruction target must not be "xml"', -]); +const PITarget = filter( + NCName, + (target) => target.toLowerCase() !== 'xml', + ['processing instruction target must not be "xml"'], + true +); // [16] PI ::= '' Char*)))? '?>' const QUESTION_MARK_CP = 0x3f; @@ -596,12 +613,14 @@ const SDDecl = preceded( S, preceded( STANDALONE, - preceded( - Eq, - or([ - delimited(DOUBLE_QUOTE, YesOrNo, DOUBLE_QUOTE, true), - delimited(SINGLE_QUOTE, YesOrNo, SINGLE_QUOTE, true), - ]) + cut( + preceded( + Eq, + or([ + delimited(DOUBLE_QUOTE, YesOrNo, DOUBLE_QUOTE, true), + delimited(SINGLE_QUOTE, YesOrNo, SINGLE_QUOTE, true), + ]) + ) ) ) ); @@ -643,24 +662,26 @@ const Attribute: Parser = then( // Combined to avoid reparsing all of the attributes when a tag turns out to be empty const Attributes = followed(star(preceded(S, Attribute)), optional(S)); -const STagOrEmptyElemTag: Parser = preceded( - ANGLE_BRACKET_OPEN, - then( - then(NameWithPosition, cut(Attributes), (name, attributes) => ({ - type: ParserEventType.STag, - name, - attributes, - })), - cut(or([map(EMPTY_ELEMENT_END, () => true), map(ANGLE_BRACKET_CLOSE, () => false)])), - (event, isEmpty) => - isEmpty - ? { - type: ParserEventType.EmptyElemTag, - name: event.name, - attributes: event.attributes, - } - : event - ) +const SOLIDUS_CP = 0x2f; +const STagOrEmptyElemTag: Parser = map( + sequence( + ANGLE_BRACKET_OPEN, + NameWithPosition, + cut(Attributes), + cut( + dispatch( + { [SOLIDUS_CP]: map(EMPTY_ELEMENT_END, () => true) }, + map(ANGLE_BRACKET_CLOSE, () => false), + 0, + ['>', '/>'] + ) + ) + ), + ([_, name, attributes, isEmpty]) => ({ + type: isEmpty ? ParserEventType.EmptyElemTag : ParserEventType.STag, + name, + attributes, + }) ); // [42] ETag ::= '' @@ -674,51 +695,54 @@ const ETag: Parser = withPosition( const Multiplicity = or([QUESTION_MARK, ASTERISK, PLUS]); // [48] cp ::= (Name | choice | seq) ('?' | '*' | '+')? -const cp = then(or([Name, choiceIndirect, seqIndirect]), optional(Multiplicity), () => undefined); +const cp = followed( + or([consume(Name), choiceIndirect, seqIndirect]), + consume(optional(Multiplicity)) +); // [49] choice ::= '(' S? cp ( S? '|' S? cp )+ S? ')' -const choice = delimited( - followed(PARENTHESIS_OPEN, optional(S)), - then( - cp, - plusConsumed(preceded(delimited(optional(S), VERTICAL_BAR, optional(S)), cut(cp))), - () => undefined - ), - preceded(optional(S), PARENTHESIS_CLOSE) +const choice = sequenceConsumed( + PARENTHESIS_OPEN, + optional(S), + cp, + plusConsumed(sequence(optional(S), VERTICAL_BAR, optional(S), cut(cp))), + optional(S), + PARENTHESIS_CLOSE ); -function choiceIndirect(input: string, offset: number): ParseResult { +function choiceIndirect(input: string, offset: number): ParseResult { return choice(input, offset); } // [50] seq ::= '(' S? cp ( S? ',' S? cp )* S? ')' -const seq = delimited( - followed(PARENTHESIS_OPEN, optional(S)), - then( - cp, - starConsumed(preceded(delimited(optional(S), COMMA, optional(S)), cut(cp))), - () => undefined - ), - preceded(optional(S), PARENTHESIS_CLOSE) +const seq = sequenceConsumed( + PARENTHESIS_OPEN, + optional(S), + cp, + starConsumed(sequence(optional(S), COMMA, optional(S), cut(cp))), + optional(S), + PARENTHESIS_CLOSE ); -function seqIndirect(input: string, offset: number): ParseResult { +function seqIndirect(input: string, offset: number): ParseResult { return seq(input, offset); } // [47] children ::= (choice | seq) ('?' | '*' | '+')? -const children = then(or([choice, seq]), optional(Multiplicity), () => undefined); +const children = followed(or([choice, seq]), optional(Multiplicity)); // [51] Mixed ::= '(' S? '#PCDATA' (S? '|' S? Name)* S? ')*' // | '(' S? '#PCDATA' S? ')' -const Mixed = preceded( - preceded(followed(PARENTHESIS_OPEN, optional(S)), PCDATA), +const Mixed = sequenceConsumed( + PARENTHESIS_OPEN, + optional(S), + PCDATA, or([ - consume( - followed( - starConsumed(preceded(delimited(optional(S), VERTICAL_BAR, optional(S)), Name)), - preceded(optional(S), followed(PARENTHESIS_CLOSE, ASTERISK)) - ) + sequenceConsumed( + starConsumed(sequenceConsumed(optional(S), VERTICAL_BAR, optional(S), Name)), + optional(S), + PARENTHESIS_CLOSE, + ASTERISK ), consume(followed(optional(S), PARENTHESIS_CLOSE)), ]) @@ -728,11 +752,9 @@ const Mixed = preceded( const contentspec = or([consume(EMPTY), consume(ANY), consume(Mixed), consume(children)]); // [45] elementdecl ::= '' -const elementdecl = delimited( - followed(ELEMENT_DECL_START, S), - then(followed(Name, S), followed(contentspec, optional(S)), () => undefined), - ANGLE_BRACKET_CLOSE, - true +const elementdecl = followed( + ELEMENT_DECL_START, + cut(sequenceConsumed(S, Name, S, contentspec, optional(S), ANGLE_BRACKET_CLOSE)) ); // [55] StringType ::= 'CDATA' @@ -758,31 +780,33 @@ const TokenizedType = or([ // [58] NotationType ::= 'NOTATION' S '(' S? Name (S? '|' S? Name)* S? ')' // Namespaces spec makes this use NCName -const NotationType = preceded( - followed(NOTATION, S), +const NotationType = followed( + NOTATION, cut( - delimited( - followed(PARENTHESIS_OPEN, optional(S)), - then( - NCName, - starConsumed(preceded(delimited(optional(S), VERTICAL_BAR, optional(S)), NCName)), - () => undefined - ), - preceded(optional(S), PARENTHESIS_CLOSE), - true + sequenceConsumed( + S, + PARENTHESIS_OPEN, + optional(S), + NCName, + starConsumed(sequenceConsumed(optional(S), VERTICAL_BAR, optional(S), NCName)), + optional(S), + PARENTHESIS_CLOSE ) ) ); // [59] Enumeration ::= '(' S? Nmtoken (S? '|' S? Nmtoken)* S? ')' -const Enumeration = delimited( - followed(PARENTHESIS_OPEN, optional(S)), - then( - Nmtoken, - starConsumed(preceded(delimited(optional(S), VERTICAL_BAR, optional(S)), Nmtoken)), - () => undefined - ), - preceded(optional(S), PARENTHESIS_CLOSE) +const Enumeration = followed( + PARENTHESIS_OPEN, + cut( + sequenceConsumed( + optional(S), + Nmtoken, + starConsumed(sequenceConsumed(optional(S), VERTICAL_BAR, optional(S), Nmtoken)), + optional(S), + PARENTHESIS_CLOSE + ) + ) ); // [57] EnumeratedType ::= NotationType | Enumeration @@ -875,13 +899,13 @@ const AttlistDecl: Parser = delimited( // [75] ExternalID ::= 'SYSTEM' S SystemLiteral // | 'PUBLIC' S PubidLiteral S SystemLiteral const ExternalID: Parser = or([ - map(preceded(SYSTEM, preceded(S, SystemLiteral)), (systemId) => ({ + map(preceded(SYSTEM, cut(preceded(S, SystemLiteral))), (systemId) => ({ publicId: null, systemId, })), preceded( PUBLIC, - then(preceded(S, PubidLiteral), preceded(S, SystemLiteral), (publicId, systemId) => ({ + then(cut(preceded(S, PubidLiteral)), preceded(S, SystemLiteral), (publicId, systemId) => ({ publicId, systemId, })) @@ -948,7 +972,7 @@ const EntityDecl = preceded(peek(ENTITY_DECL_START), cut(or([GEDecl, PEDecl]))); // [83] PublicID ::= 'PUBLIC' S PubidLiteral const PublicID: Parser = map( - followed(followed(PUBLIC, S), PubidLiteral), + followed(followed(PUBLIC, S), cut(PubidLiteral)), (publicId) => ({ publicId, systemId: null }) ); @@ -991,47 +1015,53 @@ const intSubset: Parser = filterUndefined( // const extSubset = then(optional(TextDecl), extSubsetDecl, () => undefined); // [28] doctypedecl ::= '' -const doctypedecl: Parser = delimited( +const doctypedecl: Parser = preceded( DOCTYPE_START, - preceded( - S, - then( - Name, - then( - followed(optional(preceded(S, ExternalID)), optional(S)), + cut( + map( + sequence( + S, + Name, + optional(preceded(S, ExternalID)), + optional(S), optional( followed( delimited(SQUARE_BRACKET_OPEN, intSubset, SQUARE_BRACKET_CLOSE, true), optional(S) ) ), - (ids, intSubset) => ({ ids, intSubset }) + ANGLE_BRACKET_CLOSE ), - (name, { ids, intSubset }) => ({ + ([_1, name, ids, _2, intSubset, _3]) => ({ type: ParserEventType.Doctypedecl, name, ids, intSubset, }) ) - ), - ANGLE_BRACKET_CLOSE + ) ); // [43] content ::= CharData? ((element | Reference | CDSect | PI | Comment) CharData?)* // Here's where we deviate a little from the spec grammar in order to avoid the recursion around // elements. Instead, consider start and end tags as separate events and handle / check nesting in // the caller. CharData is already greedy, so we can include it into the big or. -const contentEvent = or< - | string - | STagEvent - | ETagEvent - | EmptyElemTagEvent - | ReferenceEvent - | CDSectEvent - | PIEvent - | CommentEvent ->([CharData, STagOrEmptyElemTag, ETag, Reference, CDSect, PI, Comment]); +const EXCLAMATION_MARK_CP = 0x21; +const contentEvent = dispatch( + { + [ANGLE_BRACKET_OPEN_CP]: dispatch( + { + [SOLIDUS_CP]: ETag, + [EXCLAMATION_MARK_CP]: or([Comment, CDSect]), + [QUESTION_MARK_CP]: PI, + }, + STagOrEmptyElemTag, + 1 + ), + [AMPERSAND_CP]: Reference, + }, + CharData +); const content: ParserState = { parser: contentEvent, diff --git a/src/dom-parsing/parsingAlgorithms.ts b/src/dom-parsing/parsingAlgorithms.ts index b757faa..c3c1ee0 100644 --- a/src/dom-parsing/parsingAlgorithms.ts +++ b/src/dom-parsing/parsingAlgorithms.ts @@ -96,7 +96,7 @@ function highlightError(input: string, start: number, end: number): string { 80 - inside.length - lineBefore.length ); const indent = Array.from(lineBefore, (c) => (isWhitespace(c) ? c : ' ')).join(''); - const squiggle = '^'.repeat(Array.from(inside).length); + const squiggle = '^'.repeat(Math.max(Array.from(inside).length, 1)); return `${lineBefore}${inside}${lineAfter}\n${indent}${squiggle}`; } @@ -641,8 +641,8 @@ export function parseXmlDocument(input: string): Document { } else { appendParsedNode(domContext.root, doc.createTextNode(collectedText.join(''))); } + collectedText.length = 0; } - collectedText.length = 0; } // Remove BOM if there is one and normalize line endings to lf diff --git a/test/dom-parsing/__snapshots__/xmlConformance.tests.ts.snap b/test/dom-parsing/__snapshots__/xmlConformance.tests.ts.snap index 4e04497..81b3574 100644 --- a/test/dom-parsing/__snapshots__/xmlConformance.tests.ts.snap +++ b/test/dom-parsing/__snapshots__/xmlConformance.tests.ts.snap @@ -1,7 +1,7 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`XML Conformance Test Suite Bjoern Hoehrmann via HST 2013-09-18 hst-bh-001 - decimal charref > 10FFFF, indeed > max 32 bit integer, checking for recovery from possible overflow: hst-bh-001 1`] = ` -"Parsing document failed, expected \\"end of input\\" +"Parsing document failed, expected \\"character reference must reference a valid character\\" At line 4, character 6:

Fa�il

@@ -9,7 +9,7 @@ At line 4, character 6: `; exports[`XML Conformance Test Suite Bjoern Hoehrmann via HST 2013-09-18 hst-bh-002 - hex charref > 10FFFF, indeed > max 32 bit integer, checking for recovery from possible overflow: hst-bh-002 1`] = ` -"Parsing document failed, expected \\"end of input\\" +"Parsing document failed, expected \\"character reference must reference a valid character\\" At line 4, character 6:

Fa�il

@@ -17,7 +17,7 @@ At line 4, character 6: `; exports[`XML Conformance Test Suite Bjoern Hoehrmann via HST 2013-09-18 hst-bh-003 - decimal charref > 10FFFF, indeed > max 64 bit integer, checking for recovery from possible overflow: hst-bh-003 1`] = ` -"Parsing document failed, expected \\"end of input\\" +"Parsing document failed, expected \\"character reference must reference a valid character\\" At line 4, character 6:

Fa�il

@@ -25,7 +25,7 @@ At line 4, character 6: `; exports[`XML Conformance Test Suite Bjoern Hoehrmann via HST 2013-09-18 hst-bh-004 - hex charref > 10FFFF, indeed > max 64 bit integer, checking for recovery from possible overflow: hst-bh-004 1`] = ` -"Parsing document failed, expected \\"end of input\\" +"Parsing document failed, expected \\"character reference must reference a valid character\\" At line 4, character 6:

Fa�il

@@ -37,7 +37,7 @@ exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P01-ibm0 At line 5, character 28: - " + ^" `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P01-ibm01n02.xml - Tests a document with wrong ordering of its prolog and element. The element occurs before the xml declaration and the DTD.: ibm-not-wf-P01-ibm01n02.xml 1`] = ` @@ -313,83 +313,83 @@ At line 6, character 47: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P04-ibm04n01.xml - Tests an element name which contains an illegal ASCII NameChar. "IllegalNameChar" is followed by #x21: ibm-not-wf-P04-ibm04n01.xml 1`] = ` -"Parsing document failed, expected \\"valid name start character\\" -At line 1, character 2: +"Parsing document failed, expected \\">\\" +At line 1, character 26: \\" +At line 1, character 26: \\" +At line 1, character 26: \\" +At line 1, character 26: \\" +At line 1, character 26: \\" +At line 1, character 26: \\" +At line 1, character 26: \\" +At line 1, character 26: \\" +At line 1, character 26: \\" +At line 1, character 26: \\" +At line 1, character 26: \\" +At line 1, character 26: \\" +At line 1, character 26: \\" +At line 1, character 26: \\" +At line 1, character 26: \\" +At line 1, character 26: \\" +At line 1, character 26: \\", \\">\\" +"Parsing document failed, expected \\">\\" At line 14, character 22: My Name is SnowMan. @@ -561,7 +561,7 @@ At line 14, character 25: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P10-ibm10n07.xml - Tests an attribute with an invalid value. The value of the attribute "first" contains the double quote character in the middle.: ibm-not-wf-P10-ibm10n07.xml 1`] = ` -"Parsing document failed, expected one of \\"/>\\", \\">\\" +"Parsing document failed, expected \\">\\" At line 14, character 22: My Name is SnowMan. @@ -577,35 +577,35 @@ At line 14, character 43: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P11-ibm11n01.xml - Tests SystemLiteral. The systemLiteral for the element "student" has a double quote character in the middle.: ibm-not-wf-P11-ibm11n01.xml 1`] = ` -"Parsing document failed, expected \\"valid name start character\\" -At line 2, character 2: +"Parsing document failed, expected \\">\\" +At line 2, character 35: \\" +At line 2, character 35: \\", \\">\\" +"Parsing document failed, expected \\">\\" At line 9, character 44: My name is Snow @@ -693,7 +693,7 @@ exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P15-ibm1 At line 8, character 40: My Name is SnowMan. - " + ^" `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P15-ibm15n03.xml - Tests comment. The second comment has a wrong beginning sequence "(less than)!-".: ibm-not-wf-P15-ibm15n03.xml 1`] = ` @@ -709,7 +709,7 @@ exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P15-ibm1 At line 8, character 40: My Name is SnowMan. - " + ^" `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P16-ibm16n01.xml - Tests PI. The content of the PI includes the sequence "?(greater than)?".: ibm-not-wf-P16-ibm16n01.xml 1`] = ` @@ -733,7 +733,7 @@ exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P16-ibm1 At line 9, character 40: My Name is SnowMan. - " + ^" `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P16-ibm16n04.xml - Tests PI. The closing sequence is missing in the PI.: ibm-not-wf-P16-ibm16n04.xml 1`] = ` @@ -741,7 +741,7 @@ exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P16-ibm1 At line 9, character 40: My Name is SnowMan. - " + ^" `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P17-ibm17n01.xml - Tests PITarget. The PITarget contains the string "XML".: ibm-not-wf-P17-ibm17n01.xml 1`] = ` @@ -789,7 +789,7 @@ exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P18-ibm1 At line 7, character 71: …e is SnowMan. text - " + ^" `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P19-ibm19n01.xml - Tests CDStart. The CDStart contains a lower case string "cdata".: ibm-not-wf-P19-ibm19n01.xml 1`] = ` @@ -1025,27 +1025,27 @@ At line 6, character 1: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P28-ibm28n01.xml - Tests doctypedecl with a required field missing. The Name "animal" is missing in the doctypedecl.: ibm-not-wf-P28-ibm28n01.xml 1`] = ` -"Parsing document failed, expected \\"valid name start character\\" -At line 2, character 2: +"Parsing document failed, expected \\">\\" +At line 2, character 18: - ^" + ^" `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P28-ibm28n02.xml - Tests doctypedecl with wrong field ordering. The Name "animal" occurs after the markup declarations inside the "[]".: ibm-not-wf-P28-ibm28n02.xml 1`] = ` "Parsing document failed, expected \\"valid name start character\\" -At line 2, character 2: +At line 2, character 11: \\" +At line 2, character 18: \\" +At line 2, character 18: \\" -At line 1, character 21: +"Parsing document failed, expected \\"=\\" +At line 1, character 31: - ^" + ^" `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P32-ibm32n03.xml - Tests SDDecl with wrong key word. The word "Standalone" occurs in the SDDecl in the XMLDecl.: ibm-not-wf-P32-ibm32n03.xml 1`] = ` @@ -1201,11 +1201,11 @@ At line 1, character 33: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P32-ibm32n08.xml - Tests SDDecl with wrong field ordering. The "=" sign occurs after the key word "yes" in the SDDecl in the XMLDecl.: ibm-not-wf-P32-ibm32n08.xml 1`] = ` -"Parsing document failed, expected \\"?>\\" -At line 1, character 21: +"Parsing document failed, expected \\"=\\" +At line 1, character 31: - ^" + ^" `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P39-ibm39n01.xml - Tests element with a required field missing. The ETag is missing for the element "root".: ibm-not-wf-P39-ibm39n01.xml 1`] = `"document is not well-formed - element \\"root\\" is missing a closing tag"`; @@ -1239,7 +1239,7 @@ At line 5, character 2: exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P39-ibm39n06.xml - Tests element with wrong field ordering. The content occurs after the ETag of the element "root".: ibm-not-wf-P39-ibm39n06.xml 1`] = `"document must not contain text outside of elements"`; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P40-ibm40n01.xml - Tests STag with a required field missing. The Name "root" is in the STag of the element "root".: ibm-not-wf-P40-ibm40n01.xml 1`] = ` -"Parsing document failed, expected one of \\"/>\\", \\">\\" +"Parsing document failed, expected \\">\\" At line 7, character 7: missing name in start tag @@ -1247,7 +1247,7 @@ At line 7, character 7: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P40-ibm40n02.xml - Tests STag with a required field missing. The white space between the Name "root" and the attribute "attr1" is missing in the STag of the element "root".: ibm-not-wf-P40-ibm40n02.xml 1`] = ` -"Parsing document failed, expected one of \\"/>\\", \\">\\" +"Parsing document failed, expected \\">\\" At line 7, character 11: missing white space in start tag @@ -1255,7 +1255,7 @@ At line 7, character 11: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P40-ibm40n03.xml - Tests STag with wrong field ordering. The Name "root" occurs after the attribute "attr1" in the STag of the element "root".: ibm-not-wf-P40-ibm40n03.xml 1`] = ` -"Parsing document failed, expected one of \\"/>\\", \\">\\" +"Parsing document failed, expected \\">\\" At line 7, character 7: Wrong ordering in start tag @@ -1279,7 +1279,7 @@ At line 7, character 20: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P41-ibm41n01.xml - Tests Attribute with a required field missing. The attribute name is missing in the Attribute in the STag of the element "root".: ibm-not-wf-P41-ibm41n01.xml 1`] = ` -"Parsing document failed, expected one of \\"/>\\", \\">\\" +"Parsing document failed, expected \\">\\" At line 7, character 7: missing name in Attribute @@ -1295,7 +1295,7 @@ At line 7, character 12: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P41-ibm41n03.xml - Tests Attribute with a required field missing. The AttValue is missing in the Attribute in the STag of the element "root".: ibm-not-wf-P41-ibm41n03.xml 1`] = ` -"Parsing document failed, expected one of '\\"', \\"'\\" +"Parsing document failed, expected \\"quoted attribute value\\" At line 7, character 14: missing AttValue in Attribute @@ -1303,7 +1303,7 @@ At line 7, character 14: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P41-ibm41n04.xml - Tests Attribute with a required field missing. The Name and the "=" are missing in the Attribute in the STag of the element "root".: ibm-not-wf-P41-ibm41n04.xml 1`] = ` -"Parsing document failed, expected one of \\"/>\\", \\">\\" +"Parsing document failed, expected \\">\\" At line 7, character 7: missing name and Eq in Attribute @@ -1319,7 +1319,7 @@ At line 7, character 12: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P41-ibm41n06.xml - Tests Attribute with a required field missing. The Name and the AttValue are missing in the Attribute in the STag of the element "root".: ibm-not-wf-P41-ibm41n06.xml 1`] = ` -"Parsing document failed, expected one of \\"/>\\", \\">\\" +"Parsing document failed, expected \\">\\" At line 7, character 7: missing Name and AttValue in Attribute @@ -1335,7 +1335,7 @@ At line 7, character 12: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P41-ibm41n08.xml - Tests Attribute with wrong field ordering. The Name and the AttValue are swapped in the Attribute in the STag of the element "root".: ibm-not-wf-P41-ibm41n08.xml 1`] = ` -"Parsing document failed, expected one of \\"/>\\", \\">\\" +"Parsing document failed, expected \\">\\" At line 7, character 7: wrong ordering in Attribute @@ -1343,7 +1343,7 @@ At line 7, character 7: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P41-ibm41n09.xml - Tests Attribute with wrong field ordering. The "=" occurs before the Name and the AttValue in the Attribute in the STag of the element "root".: ibm-not-wf-P41-ibm41n09.xml 1`] = ` -"Parsing document failed, expected one of \\"/>\\", \\">\\" +"Parsing document failed, expected \\">\\" At line 7, character 7: wrong ordering in Attribute @@ -1465,7 +1465,7 @@ At line 7, character 2: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P44-ibm44n02.xml - Tests EmptyElemTag with wrong field ordering. The Attribute (attri1 = "any") occurs before the name of the element "root" in the EmptyElemTag.: ibm-not-wf-P44-ibm44n02.xml 1`] = ` -"Parsing document failed, expected one of \\"/>\\", \\">\\" +"Parsing document failed, expected \\">\\" At line 7, character 7: @@ -1473,7 +1473,7 @@ At line 7, character 7: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P44-ibm44n03.xml - Tests EmptyElemTag with wrong closing sequence. The string "\\>" is used as the closing sequence in the EmptyElemtag of the element "root".: ibm-not-wf-P44-ibm44n03.xml 1`] = ` -"Parsing document failed, expected one of \\"/>\\", \\">\\" +"Parsing document failed, expected \\">\\" At line 7, character 18: @@ -1865,7 +1865,7 @@ At line 7, character 30: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P52-ibm52n01.xml - Tests AttlistDecl with a required field missing. The Name is missing in the AttlistDecl in the DTD.: ibm-not-wf-P52-ibm52n01.xml 1`] = ` -"Parsing document failed, expected \\")\\" +"Parsing document failed, expected one of \\"CDATA\\", \\"IDREFS\\", \\"IDREF\\", \\"ID\\", \\"ENTITY\\", \\"ENTITIES\\", \\"NMTOKENS\\", \\"NMTOKEN\\", \\"NOTATION\\", \\"(\\" At line 6, character 23: @@ -1881,7 +1881,7 @@ At line 6, character 1: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P52-ibm52n03.xml - Tests AttlistDecl with wrong field ordering. The Name "a" occurs after the first AttDef in the AttlistDecl in the DTD.: ibm-not-wf-P52-ibm52n03.xml 1`] = ` -"Parsing document failed, expected \\")\\" +"Parsing document failed, expected one of \\"CDATA\\", \\"IDREFS\\", \\"IDREF\\", \\"ID\\", \\"ENTITY\\", \\"ENTITIES\\", \\"NMTOKENS\\", \\"NMTOKEN\\", \\"NOTATION\\", \\"(\\" At line 6, character 23: @@ -1913,7 +1913,7 @@ At line 6, character 1: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P53-ibm53n01.xml - Tests AttDef with a required field missing. The DefaultDecl is missing in the AttDef for the name "attr1" in the AttlistDecl in the DTD.: ibm-not-wf-P53-ibm53n01.xml 1`] = ` -"Parsing document failed, expected one of \\"#REQUIRED\\", \\"#IMPLIED\\", '\\"', \\"'\\" +"Parsing document failed, expected one of \\"#REQUIRED\\", \\"#IMPLIED\\", \\"quoted attribute value\\" At line 6, character 25: @@ -1929,7 +1929,7 @@ At line 6, character 28: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P53-ibm53n03.xml - Tests AttDef with a required field missing. The AttType is missing for "attr1" in the AttDef in the AttlistDecl in the DTD.: ibm-not-wf-P53-ibm53n03.xml 1`] = ` -"Parsing document failed, expected \\")\\" +"Parsing document failed, expected one of \\"CDATA\\", \\"IDREFS\\", \\"IDREF\\", \\"ID\\", \\"ENTITY\\", \\"ENTITIES\\", \\"NMTOKENS\\", \\"NMTOKEN\\", \\"NOTATION\\", \\"(\\" At line 6, character 19: @@ -1977,7 +1977,7 @@ At line 6, character 13: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P54-ibm54n01.xml - Tests AttType with a wrong option. The string "BOGUSATTR" is used as the AttType in the AttlistDecl in the DTD.: ibm-not-wf-P54-ibm54n01.xml 1`] = ` -"Parsing document failed, expected \\")\\" +"Parsing document failed, expected one of \\"CDATA\\", \\"IDREFS\\", \\"IDREF\\", \\"ID\\", \\"ENTITY\\", \\"ENTITIES\\", \\"NMTOKENS\\", \\"NMTOKEN\\", \\"NOTATION\\", \\"(\\" At line 7, character 17: @@ -1985,7 +1985,7 @@ At line 7, character 17: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P54-ibm54n02.xml - Tests AttType with a wrong option. The string "PCDATA" is used as the AttType in the AttlistDecl in the DTD.: ibm-not-wf-P54-ibm54n02.xml 1`] = ` -"Parsing document failed, expected \\")\\" +"Parsing document failed, expected one of \\"CDATA\\", \\"IDREFS\\", \\"IDREF\\", \\"ID\\", \\"ENTITY\\", \\"ENTITIES\\", \\"NMTOKENS\\", \\"NMTOKEN\\", \\"NOTATION\\", \\"(\\" At line 7, character 17: @@ -1993,7 +1993,7 @@ At line 7, character 17: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P55-ibm55n01.xml - Tests StringType with a wrong key word. The lower case string "cdata" is used as the StringType in the AttType in the AttlistDecl in the DTD.: ibm-not-wf-P55-ibm55n01.xml 1`] = ` -"Parsing document failed, expected \\")\\" +"Parsing document failed, expected one of \\"CDATA\\", \\"IDREFS\\", \\"IDREF\\", \\"ID\\", \\"ENTITY\\", \\"ENTITIES\\", \\"NMTOKENS\\", \\"NMTOKEN\\", \\"NOTATION\\", \\"(\\" At line 7, character 17: @@ -2001,7 +2001,7 @@ At line 7, character 17: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P55-ibm55n02.xml - Tests StringType with a wrong key word. The string "#CDATA" is used as the StringType in the AttType in the AttlistDecl in the DTD.: ibm-not-wf-P55-ibm55n02.xml 1`] = ` -"Parsing document failed, expected \\")\\" +"Parsing document failed, expected one of \\"CDATA\\", \\"IDREFS\\", \\"IDREF\\", \\"ID\\", \\"ENTITY\\", \\"ENTITIES\\", \\"NMTOKENS\\", \\"NMTOKEN\\", \\"NOTATION\\", \\"(\\" At line 7, character 17: @@ -2009,7 +2009,7 @@ At line 7, character 17: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P55-ibm55n03.xml - Tests StringType with a wrong key word. The string "CData" is used as the StringType in the AttType in the AttlistDecl in the DTD.: ibm-not-wf-P55-ibm55n03.xml 1`] = ` -"Parsing document failed, expected \\")\\" +"Parsing document failed, expected one of \\"CDATA\\", \\"IDREFS\\", \\"IDREF\\", \\"ID\\", \\"ENTITY\\", \\"ENTITIES\\", \\"NMTOKENS\\", \\"NMTOKEN\\", \\"NOTATION\\", \\"(\\" At line 7, character 17: @@ -2017,7 +2017,7 @@ At line 7, character 17: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P56-ibm56n01.xml - Tests TokenizedType with wrong key word. The type "id" is used in the TokenizedType in the AttDef in the AttlistDecl in the DTD.: ibm-not-wf-P56-ibm56n01.xml 1`] = ` -"Parsing document failed, expected \\")\\" +"Parsing document failed, expected one of \\"CDATA\\", \\"IDREFS\\", \\"IDREF\\", \\"ID\\", \\"ENTITY\\", \\"ENTITIES\\", \\"NMTOKENS\\", \\"NMTOKEN\\", \\"NOTATION\\", \\"(\\" At line 7, character 18: @@ -2025,7 +2025,7 @@ At line 7, character 18: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P56-ibm56n02.xml - Tests TokenizedType with wrong key word. The type "Idref" is used in the TokenizedType in the AttDef in the AttlistDecl in the DTD.: ibm-not-wf-P56-ibm56n02.xml 1`] = ` -"Parsing document failed, expected \\")\\" +"Parsing document failed, expected one of \\"CDATA\\", \\"IDREFS\\", \\"IDREF\\", \\"ID\\", \\"ENTITY\\", \\"ENTITIES\\", \\"NMTOKENS\\", \\"NMTOKEN\\", \\"NOTATION\\", \\"(\\" At line 7, character 18: @@ -2033,7 +2033,7 @@ At line 7, character 18: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P56-ibm56n03.xml - Tests TokenizedType with wrong key word. The type"Idrefs" is used in the TokenizedType in the AttDef in the AttlistDecl in the DTD.: ibm-not-wf-P56-ibm56n03.xml 1`] = ` -"Parsing document failed, expected \\")\\" +"Parsing document failed, expected one of \\"CDATA\\", \\"IDREFS\\", \\"IDREF\\", \\"ID\\", \\"ENTITY\\", \\"ENTITIES\\", \\"NMTOKENS\\", \\"NMTOKEN\\", \\"NOTATION\\", \\"(\\" At line 7, character 18: @@ -2041,7 +2041,7 @@ At line 7, character 18: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P56-ibm56n04.xml - Tests TokenizedType with wrong key word. The type "EntitY" is used in the TokenizedType in the AttDef in the AttlistDecl in the DTD.: ibm-not-wf-P56-ibm56n04.xml 1`] = ` -"Parsing document failed, expected \\")\\" +"Parsing document failed, expected one of \\"CDATA\\", \\"IDREFS\\", \\"IDREF\\", \\"ID\\", \\"ENTITY\\", \\"ENTITIES\\", \\"NMTOKENS\\", \\"NMTOKEN\\", \\"NOTATION\\", \\"(\\" At line 7, character 18: @@ -2049,7 +2049,7 @@ At line 7, character 18: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P56-ibm56n05.xml - Tests TokenizedType with wrong key word. The type "nmTOKEN" is used in the TokenizedType in the AttDef in the AttlistDecl in the DTD.: ibm-not-wf-P56-ibm56n05.xml 1`] = ` -"Parsing document failed, expected \\")\\" +"Parsing document failed, expected one of \\"CDATA\\", \\"IDREFS\\", \\"IDREF\\", \\"ID\\", \\"ENTITY\\", \\"ENTITIES\\", \\"NMTOKENS\\", \\"NMTOKEN\\", \\"NOTATION\\", \\"(\\" At line 7, character 18: @@ -2057,7 +2057,7 @@ At line 7, character 18: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P56-ibm56n06.xml - Tests TokenizedType with wrong key word. The type "NMtokens" is used in the TokenizedType in the AttDef in the AttlistDecl in the DTD.: ibm-not-wf-P56-ibm56n06.xml 1`] = ` -"Parsing document failed, expected \\")\\" +"Parsing document failed, expected one of \\"CDATA\\", \\"IDREFS\\", \\"IDREF\\", \\"ID\\", \\"ENTITY\\", \\"ENTITIES\\", \\"NMTOKENS\\", \\"NMTOKEN\\", \\"NOTATION\\", \\"(\\" At line 7, character 18: @@ -2065,7 +2065,7 @@ At line 7, character 18: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P56-ibm56n07.xml - Tests TokenizedType with wrong key word. The type "#ID" is used in the TokenizedType in the AttDef in the AttlistDecl in the DTD.: ibm-not-wf-P56-ibm56n07.xml 1`] = ` -"Parsing document failed, expected \\")\\" +"Parsing document failed, expected one of \\"CDATA\\", \\"IDREFS\\", \\"IDREF\\", \\"ID\\", \\"ENTITY\\", \\"ENTITIES\\", \\"NMTOKENS\\", \\"NMTOKEN\\", \\"NOTATION\\", \\"(\\" At line 7, character 18: @@ -2073,7 +2073,7 @@ At line 7, character 18: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P57-ibm57n01.xml - Tests EnumeratedType with an illegal option. The string "NMTOKEN (a|b)" is used in the EnumeratedType in the AttlistDecl in the DTD.: ibm-not-wf-P57-ibm57n01.xml 1`] = ` -"Parsing document failed, expected one of \\"#REQUIRED\\", \\"#IMPLIED\\", '\\"', \\"'\\" +"Parsing document failed, expected one of \\"#REQUIRED\\", \\"#IMPLIED\\", \\"quoted attribute value\\" At line 6, character 29: @@ -2081,7 +2081,7 @@ At line 6, character 29: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P58-ibm58n01.xml - Tests NotationType with wrong key word. The lower case "notation" is used as the key word in the NotationType in the AttDef in the AttlistDecl in the DTD.: ibm-not-wf-P58-ibm58n01.xml 1`] = ` -"Parsing document failed, expected \\")\\" +"Parsing document failed, expected one of \\"CDATA\\", \\"IDREFS\\", \\"IDREF\\", \\"ID\\", \\"ENTITY\\", \\"ENTITIES\\", \\"NMTOKENS\\", \\"NMTOKEN\\", \\"NOTATION\\", \\"(\\" At line 8, character 21: @@ -2113,7 +2113,7 @@ At line 8, character 36: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P58-ibm58n05.xml - Tests NotationType with wrong field ordering. The key word "NOTATION" occurs after "(this)" in the NotationType in the AttDef in the AttlistDecl in the DTD.: ibm-not-wf-P58-ibm58n05.xml 1`] = ` -"Parsing document failed, expected one of \\"#REQUIRED\\", \\"#IMPLIED\\", '\\"', \\"'\\" +"Parsing document failed, expected one of \\"#REQUIRED\\", \\"#IMPLIED\\", \\"quoted attribute value\\" At line 8, character 28: @@ -2129,7 +2129,7 @@ At line 10, character 37: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P58-ibm58n07.xml - Tests NotationType with a required field missing. The white space is missing between "NOTATION" and "(this)" in the NotationType in the AttDef in the AttlistDecl in the DTD.: ibm-not-wf-P58-ibm58n07.xml 1`] = ` -"Parsing document failed, expected \\")\\" +"Parsing document failed, expected \\"whitespace\\" At line 9, character 31: @@ -2145,7 +2145,7 @@ At line 9, character 33: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P59-ibm59n01.xml - Tests Enumeration with required fields missing. The Nmtokens and "|"s are missing in the AttDef in the AttlistDecl in the DTD.: ibm-not-wf-P59-ibm59n01.xml 1`] = ` -"Parsing document failed, expected \\")\\" +"Parsing document failed, expected \\"valid name character\\" At line 8, character 22: @@ -2169,7 +2169,7 @@ At line 9, character 26: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P59-ibm59n04.xml - Tests Enumeration with illegal presence. The double quotes occur around the Enumeration value in the AttDef in the AttlistDecl in the DTD.: ibm-not-wf-P59-ibm59n04.xml 1`] = ` -"Parsing document failed, expected \\")\\" +"Parsing document failed, expected \\"valid name character\\" At line 8, character 22: @@ -2177,7 +2177,7 @@ At line 8, character 22: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P59-ibm59n05.xml - Tests Enumeration with a required field missing. The white space is missing between in the AttDef in the AttlistDecl in the DTD.: ibm-not-wf-P59-ibm59n05.xml 1`] = ` -"Parsing document failed, expected \\")\\" +"Parsing document failed, expected one of \\"CDATA\\", \\"IDREFS\\", \\"IDREF\\", \\"ID\\", \\"ENTITY\\", \\"ENTITIES\\", \\"NMTOKENS\\", \\"NMTOKEN\\", \\"NOTATION\\", \\"(\\" At line 8, character 21: @@ -2185,7 +2185,7 @@ At line 8, character 21: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P59-ibm59n06.xml - Tests Enumeration with a required field missing. The beginning bracket "(" is missing in the AttDef in the AttlistDecl in the DTD.: ibm-not-wf-P59-ibm59n06.xml 1`] = ` -"Parsing document failed, expected \\")\\" +"Parsing document failed, expected one of \\"CDATA\\", \\"IDREFS\\", \\"IDREF\\", \\"ID\\", \\"ENTITY\\", \\"ENTITIES\\", \\"NMTOKENS\\", \\"NMTOKEN\\", \\"NOTATION\\", \\"(\\" At line 8, character 21: @@ -2193,7 +2193,7 @@ At line 8, character 21: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P60-ibm60n01.xml - Tests DefaultDecl with wrong key word. The string "#required" is used as the key word in the DefaultDecl in the AttDef in the AttlistDecl in the DTD.: ibm-not-wf-P60-ibm60n01.xml 1`] = ` -"Parsing document failed, expected one of \\"#REQUIRED\\", \\"#IMPLIED\\", '\\"', \\"'\\" +"Parsing document failed, expected one of \\"#REQUIRED\\", \\"#IMPLIED\\", \\"quoted attribute value\\" At line 7, character 30: @@ -2201,7 +2201,7 @@ At line 7, character 30: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P60-ibm60n02.xml - Tests DefaultDecl with wrong key word. The string "Implied" is used as the key word in the DefaultDecl in the AttDef in the AttlistDecl in the DTD.: ibm-not-wf-P60-ibm60n02.xml 1`] = ` -"Parsing document failed, expected one of \\"#REQUIRED\\", \\"#IMPLIED\\", '\\"', \\"'\\" +"Parsing document failed, expected one of \\"#REQUIRED\\", \\"#IMPLIED\\", \\"quoted attribute value\\" At line 7, character 30: @@ -2209,7 +2209,7 @@ At line 7, character 30: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P60-ibm60n03.xml - Tests DefaultDecl with wrong key word. The string "!IMPLIED" is used as the key word in the DefaultDecl in the AttDef in the AttlistDecl in the DTD.: ibm-not-wf-P60-ibm60n03.xml 1`] = ` -"Parsing document failed, expected one of \\"#REQUIRED\\", \\"#IMPLIED\\", '\\"', \\"'\\" +"Parsing document failed, expected one of \\"#REQUIRED\\", \\"#IMPLIED\\", \\"quoted attribute value\\" At line 7, character 30: @@ -2217,7 +2217,7 @@ At line 7, character 30: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P60-ibm60n04.xml - Tests DefaultDecl with a required field missing. There is no attribute value specified after the key word "#FIXED" in the DefaultDecl in the AttDef in the AttlistDecl in the DTD.: ibm-not-wf-P60-ibm60n04.xml 1`] = ` -"Parsing document failed, expected one of \\"#REQUIRED\\", \\"#IMPLIED\\", '\\"', \\"'\\" +"Parsing document failed, expected one of \\"#REQUIRED\\", \\"#IMPLIED\\", \\"quoted attribute value\\" At line 7, character 37: @@ -2225,7 +2225,7 @@ At line 7, character 37: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P60-ibm60n05.xml - Tests DefaultDecl with a required field missing. The white space is missing between the key word "#FIXED" and the attribute value in the DefaultDecl in the AttDef in the AttlistDecl in the DTD.: ibm-not-wf-P60-ibm60n05.xml 1`] = ` -"Parsing document failed, expected one of \\"#REQUIRED\\", \\"#IMPLIED\\", '\\"', \\"'\\" +"Parsing document failed, expected one of \\"#REQUIRED\\", \\"#IMPLIED\\", \\"quoted attribute value\\" At line 7, character 30: @@ -2345,7 +2345,7 @@ At line 5, character 46: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P66-ibm66n12.xml - Tests CharRef with an illegal character referred to. The "#x0000" is used as the referred character in the attribute value in the EmptyElemTag of the element "root".: ibm-not-wf-P66-ibm66n12.xml 1`] = ` -"Parsing document failed, expected '\\"' +"Parsing document failed, expected \\"character reference must reference a valid character\\" At line 7, character 50: @@ -2353,7 +2353,7 @@ At line 7, character 50: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P66-ibm66n13.xml - Tests CharRef with an illegal character referred to. The "#x001f" is used as the referred character in the attribute value in the EmptyElemTag of the element "root".: ibm-not-wf-P66-ibm66n13.xml 1`] = ` -"Parsing document failed, expected '\\"' +"Parsing document failed, expected \\"character reference must reference a valid character\\" At line 7, character 40: @@ -2361,7 +2361,7 @@ At line 7, character 40: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P66-ibm66n14.xml - Tests CharRef with an illegal character referred to. The "#xfffe" is used as the referred character in the attribute value in the EmptyElemTag of the element "root".: ibm-not-wf-P66-ibm66n14.xml 1`] = ` -"Parsing document failed, expected '\\"' +"Parsing document failed, expected \\"character reference must reference a valid character\\" At line 7, character 41: @@ -2369,7 +2369,7 @@ At line 7, character 41: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P66-ibm66n15.xml - Tests CharRef with an illegal character referred to. The "#xffff" is used as the referred character in the attribute value in the EmptyElemTag of the element "root".: ibm-not-wf-P66-ibm66n15.xml 1`] = ` -"Parsing document failed, expected '\\"' +"Parsing document failed, expected \\"character reference must reference a valid character\\" At line 7, character 40: @@ -2673,31 +2673,31 @@ At line 6, character 17: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P75-ibm75n02.xml - Tests ExternalID with wrong key word. The string "public" is used as the key word in the ExternalID in the doctypedecl.: ibm-not-wf-P75-ibm75n02.xml 1`] = ` -"Parsing document failed, expected \\"valid name start character\\" -At line 3, character 2: +"Parsing document failed, expected \\">\\" +At line 4, character 5: -\\" +At line 4, character 5: -\\" +At line 4, character 5: - @@ -2705,7 +2705,7 @@ At line 6, character 23: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P75-ibm75n06.xml - Tests ExternalID with a required field missing. The Systemliteral is missing after "SYSTEM" in the ExternalID in the EntityDef in the EntityDecl in the DTD.: ibm-not-wf-P75-ibm75n06.xml 1`] = ` -"Parsing document failed, expected one of \\"SYSTEM\\", \\"PUBLIC\\" +"Parsing document failed, expected one of '\\"', \\"'\\" At line 6, character 24: @@ -2713,27 +2713,27 @@ At line 6, character 24: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P75-ibm75n07.xml - Tests ExternalID with a required field missing. The white space between the PublicLiteral and the Systemliteral is missing in the ExternalID in the doctypedecl.: ibm-not-wf-P75-ibm75n07.xml 1`] = ` -"Parsing document failed, expected \\"valid name start character\\" -At line 3, character 2: +"Parsing document failed, expected \\">\\" +At line 4, character 5: -\\" +At line 4, character 5: -\\" +At line 4, character 5: -\\" +At line 4, character 5: - @@ -3041,7 +3041,7 @@ At line 7, character 28: `; exports[`XML Conformance Test Suite IBM XML 1.0 Tests not-wf ibm-not-wf-P83-ibm83n05.xml - Tests PublicID with a required field missing. The PubidLiteral is missing in the PublicID in the NotationDecl in the DTD.: ibm-not-wf-P83-ibm83n05.xml 1`] = ` -"Parsing document failed, expected one of \\"SYSTEM\\", \\"PUBLIC\\" +"Parsing document failed, expected one of '\\"', \\"'\\" At line 7, character 29: @@ -3105,7 +3105,7 @@ At line 3, character 4: `; exports[`XML Conformance Test Suite James Clark XML 1.0 tests not-wf-sa-001 - Attribute values must start with attribute names, not "?".: not-wf-sa-001 1`] = ` -"Parsing document failed, expected one of \\"/>\\", \\">\\" +"Parsing document failed, expected \\">\\" At line 3, character 1: ? @@ -3133,7 +3133,7 @@ exports[`XML Conformance Test Suite James Clark XML 1.0 tests not-wf-sa-004 - SG At line 2, character 1: -" +^" `; exports[`XML Conformance Test Suite James Clark XML 1.0 tests not-wf-sa-005 - Processing instructions end in '?>' not '?'.: not-wf-sa-005 1`] = ` @@ -3141,7 +3141,7 @@ exports[`XML Conformance Test Suite James Clark XML 1.0 tests not-wf-sa-005 - Pr At line 2, character 1: -" +^" `; exports[`XML Conformance Test Suite James Clark XML 1.0 tests not-wf-sa-006 - XML comments may not contain "--": not-wf-sa-006 1`] = ` @@ -3193,7 +3193,7 @@ At line 1, character 8: `; exports[`XML Conformance Test Suite James Clark XML 1.0 tests not-wf-sa-012 - SGML-ism: attribute values must be quoted in all cases.: not-wf-sa-012 1`] = ` -"Parsing document failed, expected one of '\\"', \\"'\\" +"Parsing document failed, expected \\"quoted attribute value\\" At line 1, character 9: @@ -3217,7 +3217,7 @@ At line 1, character 10: `; exports[`XML Conformance Test Suite James Clark XML 1.0 tests not-wf-sa-015 - Attribute values need a value, not just an equals sign.: not-wf-sa-015 1`] = ` -"Parsing document failed, expected one of '\\"', \\"'\\" +"Parsing document failed, expected \\"quoted attribute value\\" At line 1, character 9: @@ -3225,7 +3225,7 @@ At line 1, character 9: `; exports[`XML Conformance Test Suite James Clark XML 1.0 tests not-wf-sa-016 - Attribute values need an associated name.: not-wf-sa-016 1`] = ` -"Parsing document failed, expected one of \\"/>\\", \\">\\" +"Parsing document failed, expected \\">\\" At line 1, character 14: @@ -3237,7 +3237,7 @@ exports[`XML Conformance Test Suite James Clark XML 1.0 tests not-wf-sa-017 - CD At line 2, character 1: -" +^" `; exports[`XML Conformance Test Suite James Clark XML 1.0 tests not-wf-sa-018 - CDATA sections begin with a literal '\\", \\">\\" +"Parsing document failed, expected \\">\\" At line 1, character 6: @@ -3317,7 +3317,7 @@ exports[`XML Conformance Test Suite James Clark XML 1.0 tests not-wf-sa-027 - Co At line 4, character 1: -" +^" `; exports[`XML Conformance Test Suite James Clark XML 1.0 tests not-wf-sa-028 - Processing instructions must end with '?>'.: not-wf-sa-028 1`] = ` @@ -3325,7 +3325,7 @@ exports[`XML Conformance Test Suite James Clark XML 1.0 tests not-wf-sa-028 - Pr At line 5, character 1: -" +^" `; exports[`XML Conformance Test Suite James Clark XML 1.0 tests not-wf-sa-029 - Text may not contain a literal ']]>' sequence.: not-wf-sa-029 1`] = ` @@ -3369,7 +3369,7 @@ At line 1, character 9: `; exports[`XML Conformance Test Suite James Clark XML 1.0 tests not-wf-sa-034 - A form feed is not a legal XML character.: not-wf-sa-034 1`] = ` -"Parsing document failed, expected one of \\"/>\\", \\">\\" +"Parsing document failed, expected \\">\\" At line 1, character 5: A form-feed is not white space or a name character\\", \\">\\" +"Parsing document failed, expected \\"/>\\" At line 2, character 3: \\", \\">\\" +"Parsing document failed, expected \\"/>\\" At line 2, character 3: @@ -3461,7 +3461,7 @@ At line 2, character 3: `; exports[`XML Conformance Test Suite James Clark XML 1.0 tests not-wf-sa-047 - Invalid empty element tag invalid whitespace: not-wf-sa-047 1`] = ` -"Parsing document failed, expected one of \\"/>\\", \\">\\" +"Parsing document failed, expected \\"/>\\" At line 2, character 4: @@ -3489,7 +3489,7 @@ exports[`XML Conformance Test Suite James Clark XML 1.0 tests not-wf-sa-050 - Em At line 1, character 1: -" +^" `; exports[`XML Conformance Test Suite James Clark XML 1.0 tests not-wf-sa-051 - CDATA is invalid at top level of document.: not-wf-sa-051 1`] = ` @@ -3533,11 +3533,11 @@ At line 2, character 1: `; exports[`XML Conformance Test Suite James Clark XML 1.0 tests not-wf-sa-056 - Invalid Document Type Definition format - misplaced comment.: not-wf-sa-056 1`] = ` -"Parsing document failed, expected \\"valid name start character\\" -At line 1, character 2: +"Parsing document failed, expected \\">\\" +At line 1, character 15: - ^" + ^" `; exports[`XML Conformance Test Suite James Clark XML 1.0 tests not-wf-sa-057 - This isn't SGML; comments can't exist in declarations.: not-wf-sa-057 1`] = ` @@ -3557,7 +3557,7 @@ At line 3, character 22: `; exports[`XML Conformance Test Suite James Clark XML 1.0 tests not-wf-sa-059 - String literal must be in quotes.: not-wf-sa-059 1`] = ` -"Parsing document failed, expected one of \\"#REQUIRED\\", \\"#IMPLIED\\", '\\"', \\"'\\" +"Parsing document failed, expected one of \\"#REQUIRED\\", \\"#IMPLIED\\", \\"quoted attribute value\\" At line 3, character 26: @@ -3565,7 +3565,7 @@ At line 3, character 26: `; exports[`XML Conformance Test Suite James Clark XML 1.0 tests not-wf-sa-060 - Invalid type NAME defined in ATTLIST.: not-wf-sa-060 1`] = ` -"Parsing document failed, expected \\")\\" +"Parsing document failed, expected one of \\"CDATA\\", \\"IDREFS\\", \\"IDREF\\", \\"ID\\", \\"ENTITY\\", \\"ENTITIES\\", \\"NMTOKENS\\", \\"NMTOKEN\\", \\"NOTATION\\", \\"(\\" At line 3, character 18: @@ -3629,7 +3629,7 @@ At line 3, character 23: `; exports[`XML Conformance Test Suite James Clark XML 1.0 tests not-wf-sa-068 - Space is required between NOTATION keyword and list of enumerated choices in declarations.: not-wf-sa-068 1`] = ` -"Parsing document failed, expected \\")\\" +"Parsing document failed, expected \\"whitespace\\" At line 3, character 26: @@ -3939,7 +3939,7 @@ At line 5, character 1: `; exports[`XML Conformance Test Suite James Clark XML 1.0 tests not-wf-sa-111 - Entiry reference must be in content of element not Start-tag.: not-wf-sa-111 1`] = ` -"Parsing document failed, expected one of \\"/>\\", \\">\\" +"Parsing document failed, expected \\">\\" At line 4, character 6: @@ -4171,7 +4171,7 @@ At line 2, character 16: `; exports[`XML Conformance Test Suite James Clark XML 1.0 tests not-wf-sa-142 - Character #x0000 is not legal anywhere in an XML document.: not-wf-sa-142 1`] = ` -"Parsing document failed, expected \\"end of input\\" +"Parsing document failed, expected \\"character reference must reference a valid character\\" At line 4, character 6: @@ -4179,7 +4179,7 @@ At line 4, character 6: `; exports[`XML Conformance Test Suite James Clark XML 1.0 tests not-wf-sa-143 - Character #x001F is not legal anywhere in an XML document.: not-wf-sa-143 1`] = ` -"Parsing document failed, expected \\"end of input\\" +"Parsing document failed, expected \\"character reference must reference a valid character\\" At line 4, character 6:  @@ -4187,7 +4187,7 @@ At line 4, character 6: `; exports[`XML Conformance Test Suite James Clark XML 1.0 tests not-wf-sa-144 - Character #xFFFF is not legal anywhere in an XML document.: not-wf-sa-144 1`] = ` -"Parsing document failed, expected \\"end of input\\" +"Parsing document failed, expected \\"character reference must reference a valid character\\" At line 4, character 6: ￿ @@ -4195,7 +4195,7 @@ At line 4, character 6: `; exports[`XML Conformance Test Suite James Clark XML 1.0 tests not-wf-sa-145 - Character #xD800 is not legal anywhere in an XML document. (If it appeared in a UTF-16 surrogate pair, it'd represent half of a UCS-4 character and so wouldn't really be in the document.): not-wf-sa-145 1`] = ` -"Parsing document failed, expected \\"end of input\\" +"Parsing document failed, expected \\"character reference must reference a valid character\\" At line 4, character 6: @@ -4203,7 +4203,7 @@ At line 4, character 6: `; exports[`XML Conformance Test Suite James Clark XML 1.0 tests not-wf-sa-146 - Character references must also refer to legal XML characters; #x00110000 is one more than the largest legal character.: not-wf-sa-146 1`] = ` -"Parsing document failed, expected \\"end of input\\" +"Parsing document failed, expected \\"character reference must reference a valid character\\" At line 4, character 6: @@ -4347,11 +4347,11 @@ At line 5, character 1: `; exports[`XML Conformance Test Suite James Clark XML 1.0 tests not-wf-sa-164 - Invalid placement of Parameter entity reference.: not-wf-sa-164 1`] = ` -"Parsing document failed, expected \\"valid name start character\\" -At line 1, character 2: +"Parsing document failed, expected \\">\\" +At line 4, character 3: - + ^" `; exports[`XML Conformance Test Suite James Clark XML 1.0 tests not-wf-sa-165 - Parameter entity declarations must have a space before the '%'.: not-wf-sa-165 1`] = ` @@ -4441,7 +4441,7 @@ exports[`XML Conformance Test Suite James Clark XML 1.0 tests not-wf-sa-179 - In At line 5, character 1: -" +^" `; exports[`XML Conformance Test Suite James Clark XML 1.0 tests not-wf-sa-180 - The Entity Declared WFC requires entities to be declared before they are used in an attribute list declaration.: not-wf-sa-180 1`] = ` @@ -4485,7 +4485,7 @@ At line 2, character 24: `; exports[`XML Conformance Test Suite James Clark XML 1.0 tests not-wf-sa-186 - Whitespace is required between attribute/value pairs.: not-wf-sa-186 1`] = ` -"Parsing document failed, expected one of \\"/>\\", \\">\\" +"Parsing document failed, expected \\">\\" At line 5, character 9: @@ -4991,7 +4991,7 @@ At line 1, character 1: `; exports[`XML Conformance Test Suite OASIS/NIST XML 1.0 Tests o-p04fail1 - Name contains invalid character.: o-p04fail1 1`] = ` -"Parsing document failed, expected one of \\"/>\\", \\">\\" +"Parsing document failed, expected \\">\\" At line 1, character 3: @@ -4999,7 +4999,7 @@ At line 1, character 3: `; exports[`XML Conformance Test Suite OASIS/NIST XML 1.0 Tests o-p04fail2 - Name contains invalid character.: o-p04fail2 1`] = ` -"Parsing document failed, expected one of \\"/>\\", \\">\\" +"Parsing document failed, expected \\">\\" At line 1, character 3: @@ -5007,7 +5007,7 @@ At line 1, character 3: `; exports[`XML Conformance Test Suite OASIS/NIST XML 1.0 Tests o-p04fail3 - Name contains invalid character.: o-p04fail3 1`] = ` -"Parsing document failed, expected one of \\"/>\\", \\">\\" +"Parsing document failed, expected \\">\\" At line 1, character 3: @@ -5067,7 +5067,7 @@ exports[`XML Conformance Test Suite OASIS/NIST XML 1.0 Tests o-p09fail4 - quote At line 6, character 7: - " + ^" `; exports[`XML Conformance Test Suite OASIS/NIST XML 1.0 Tests o-p09fail5 - quote types must match: o-p09fail5 1`] = ` @@ -5075,7 +5075,7 @@ exports[`XML Conformance Test Suite OASIS/NIST XML 1.0 Tests o-p09fail5 - quote At line 6, character 7: - " + ^" `; exports[`XML Conformance Test Suite OASIS/NIST XML 1.0 Tests o-p10fail1 - attribute values exclude '<': o-p10fail1 1`] = ` @@ -5099,15 +5099,15 @@ exports[`XML Conformance Test Suite OASIS/NIST XML 1.0 Tests o-p10fail3 - quote At line 2, character 1: -" +^" `; exports[`XML Conformance Test Suite OASIS/NIST XML 1.0 Tests o-p11fail1 - quote types must match: o-p11fail1 1`] = ` -"Parsing document failed, expected one of \\"SYSTEM\\", \\"PUBLIC\\" +"Parsing document failed, expected one of '\\"', \\"'\\" At line 8, character 1: -" +^" `; exports[`XML Conformance Test Suite OASIS/NIST XML 1.0 Tests o-p11fail2 - cannot contain delimiting quotes: o-p11fail2 1`] = ` @@ -5119,7 +5119,7 @@ At line 5, character 26: `; exports[`XML Conformance Test Suite OASIS/NIST XML 1.0 Tests o-p11pass1 - system literals may not contain URI fragments: o-p11pass1 1`] = ` -"Parsing document failed, expected one of \\"SYSTEM\\", \\"PUBLIC\\" +"Parsing document failed, expected \\"system identifier must not contain a fragment identifier\\" At line 5, character 24: ?>/\\\\''\\"> @@ -5423,11 +5423,11 @@ At line 1, character 20: `; exports[`XML Conformance Test Suite OASIS/NIST XML 1.0 Tests o-p32fail4 - quotes are required: o-p32fail4 1`] = ` -"Parsing document failed, expected \\"?>\\" -At line 1, character 21: +"Parsing document failed, expected one of '\\"', \\"'\\" +At line 1, character 32: - ^" + ^" `; exports[`XML Conformance Test Suite OASIS/NIST XML 1.0 Tests o-p32fail5 - yes or no must be lower case: o-p32fail5 1`] = ` @@ -5453,7 +5453,7 @@ exports[`XML Conformance Test Suite OASIS/NIST XML 1.0 Tests o-p39fail3 - XML do At line 1, character 1: -" +^" `; exports[`XML Conformance Test Suite OASIS/NIST XML 1.0 Tests o-p39fail4 - XML declarations must be correctly terminated: o-p39fail4 1`] = ` @@ -5473,7 +5473,7 @@ At line 1, character 20: `; exports[`XML Conformance Test Suite OASIS/NIST XML 1.0 Tests o-p40fail1 - S is required between attributes: o-p40fail1 1`] = ` -"Parsing document failed, expected one of \\"/>\\", \\">\\" +"Parsing document failed, expected \\">\\" At line 1, character 15: @@ -5545,7 +5545,7 @@ At line 1, character 11: `; exports[`XML Conformance Test Suite OASIS/NIST XML 1.0 Tests o-p42fail3 - no NET (contrast with SGML): o-p42fail3 1`] = ` -"Parsing document failed, expected one of \\"/>\\", \\">\\" +"Parsing document failed, expected \\"/>\\" At line 1, character 5: \\", \\">\\" +"Parsing document failed, expected \\"/>\\" At line 1, character 5: @@ -5593,7 +5593,7 @@ At line 1, character 5: `; exports[`XML Conformance Test Suite OASIS/NIST XML 1.0 Tests o-p44fail3 - Illegal comment in Empty element tag.: o-p44fail3 1`] = ` -"Parsing document failed, expected one of \\"/>\\", \\">\\" +"Parsing document failed, expected \\">\\" At line 1, character 6: @@ -5601,7 +5601,7 @@ At line 1, character 6: `; exports[`XML Conformance Test Suite OASIS/NIST XML 1.0 Tests o-p44fail4 - Whitespace required between attributes.: o-p44fail4 1`] = ` -"Parsing document failed, expected one of \\"/>\\", \\">\\" +"Parsing document failed, expected \\">\\" At line 1, character 15: @@ -5849,7 +5849,7 @@ At line 4, character 18: `; exports[`XML Conformance Test Suite OASIS/NIST XML 1.0 Tests o-p53fail3 - type is required: o-p53fail3 1`] = ` -"Parsing document failed, expected \\")\\" +"Parsing document failed, expected one of \\"CDATA\\", \\"IDREFS\\", \\"IDREF\\", \\"ID\\", \\"ENTITY\\", \\"ENTITIES\\", \\"NMTOKENS\\", \\"NMTOKEN\\", \\"NOTATION\\", \\"(\\" At line 4, character 19: @@ -5873,7 +5873,7 @@ At line 4, character 15: `; exports[`XML Conformance Test Suite OASIS/NIST XML 1.0 Tests o-p54fail1 - don't pass unknown attribute types: o-p54fail1 1`] = ` -"Parsing document failed, expected \\")\\" +"Parsing document failed, expected one of \\"CDATA\\", \\"IDREFS\\", \\"IDREF\\", \\"ID\\", \\"ENTITY\\", \\"ENTITIES\\", \\"NMTOKENS\\", \\"NMTOKEN\\", \\"NOTATION\\", \\"(\\" At line 4, character 19: @@ -5881,7 +5881,7 @@ At line 4, character 19: `; exports[`XML Conformance Test Suite OASIS/NIST XML 1.0 Tests o-p55fail1 - must be upper case: o-p55fail1 1`] = ` -"Parsing document failed, expected \\")\\" +"Parsing document failed, expected one of \\"CDATA\\", \\"IDREFS\\", \\"IDREF\\", \\"ID\\", \\"ENTITY\\", \\"ENTITIES\\", \\"NMTOKENS\\", \\"NMTOKEN\\", \\"NOTATION\\", \\"(\\" At line 4, character 19: @@ -5897,7 +5897,7 @@ At line 4, character 21: `; exports[`XML Conformance Test Suite OASIS/NIST XML 1.0 Tests o-p56fail2 - no NUMBER type: o-p56fail2 1`] = ` -"Parsing document failed, expected \\")\\" +"Parsing document failed, expected one of \\"CDATA\\", \\"IDREFS\\", \\"IDREF\\", \\"ID\\", \\"ENTITY\\", \\"ENTITIES\\", \\"NMTOKENS\\", \\"NMTOKEN\\", \\"NOTATION\\", \\"(\\" At line 4, character 19: @@ -5905,7 +5905,7 @@ At line 4, character 19: `; exports[`XML Conformance Test Suite OASIS/NIST XML 1.0 Tests o-p56fail3 - no NAME type: o-p56fail3 1`] = ` -"Parsing document failed, expected \\")\\" +"Parsing document failed, expected one of \\"CDATA\\", \\"IDREFS\\", \\"IDREF\\", \\"ID\\", \\"ENTITY\\", \\"ENTITIES\\", \\"NMTOKENS\\", \\"NMTOKEN\\", \\"NOTATION\\", \\"(\\" At line 4, character 19: @@ -5921,7 +5921,7 @@ At line 4, character 25: `; exports[`XML Conformance Test Suite OASIS/NIST XML 1.0 Tests o-p56fail5 - types must be upper case: o-p56fail5 1`] = ` -"Parsing document failed, expected \\")\\" +"Parsing document failed, expected one of \\"CDATA\\", \\"IDREFS\\", \\"IDREF\\", \\"ID\\", \\"ENTITY\\", \\"ENTITIES\\", \\"NMTOKENS\\", \\"NMTOKEN\\", \\"NOTATION\\", \\"(\\" At line 4, character 19: @@ -5929,7 +5929,7 @@ At line 4, character 19: `; exports[`XML Conformance Test Suite OASIS/NIST XML 1.0 Tests o-p57fail1 - no keyword for NMTOKEN enumeration: o-p57fail1 1`] = ` -"Parsing document failed, expected one of \\"#REQUIRED\\", \\"#IMPLIED\\", '\\"', \\"'\\" +"Parsing document failed, expected one of \\"#REQUIRED\\", \\"#IMPLIED\\", \\"quoted attribute value\\" At line 4, character 27: @@ -5961,7 +5961,7 @@ At line 6, character 30: `; exports[`XML Conformance Test Suite OASIS/NIST XML 1.0 Tests o-p58fail4 - NOTATION must be upper case: o-p58fail4 1`] = ` -"Parsing document failed, expected \\")\\" +"Parsing document failed, expected one of \\"CDATA\\", \\"IDREFS\\", \\"IDREF\\", \\"ID\\", \\"ENTITY\\", \\"ENTITIES\\", \\"NMTOKENS\\", \\"NMTOKEN\\", \\"NOTATION\\", \\"(\\" At line 6, character 19: @@ -5969,7 +5969,7 @@ At line 6, character 19: `; exports[`XML Conformance Test Suite OASIS/NIST XML 1.0 Tests o-p58fail5 - S after keyword is required: o-p58fail5 1`] = ` -"Parsing document failed, expected \\")\\" +"Parsing document failed, expected \\"whitespace\\" At line 6, character 27: @@ -6001,7 +6001,7 @@ At line 5, character 29: `; exports[`XML Conformance Test Suite OASIS/NIST XML 1.0 Tests o-p59fail1 - at least one required: o-p59fail1 1`] = ` -"Parsing document failed, expected \\")\\" +"Parsing document failed, expected \\"valid name character\\" At line 4, character 20: @@ -6017,7 +6017,7 @@ At line 4, character 21: `; exports[`XML Conformance Test Suite OASIS/NIST XML 1.0 Tests o-p59fail3 - values are unquoted: o-p59fail3 1`] = ` -"Parsing document failed, expected \\")\\" +"Parsing document failed, expected \\"valid name character\\" At line 4, character 20: @@ -6025,7 +6025,7 @@ At line 4, character 20: `; exports[`XML Conformance Test Suite OASIS/NIST XML 1.0 Tests o-p60fail1 - keywords must be upper case: o-p60fail1 1`] = ` -"Parsing document failed, expected one of \\"#REQUIRED\\", \\"#IMPLIED\\", '\\"', \\"'\\" +"Parsing document failed, expected one of \\"#REQUIRED\\", \\"#IMPLIED\\", \\"quoted attribute value\\" At line 4, character 25: @@ -6033,7 +6033,7 @@ At line 4, character 25: `; exports[`XML Conformance Test Suite OASIS/NIST XML 1.0 Tests o-p60fail2 - S is required after #FIXED: o-p60fail2 1`] = ` -"Parsing document failed, expected one of \\"#REQUIRED\\", \\"#IMPLIED\\", '\\"', \\"'\\" +"Parsing document failed, expected one of \\"#REQUIRED\\", \\"#IMPLIED\\", \\"quoted attribute value\\" At line 4, character 25: @@ -6049,7 +6049,7 @@ At line 4, character 35: `; exports[`XML Conformance Test Suite OASIS/NIST XML 1.0 Tests o-p60fail4 - #FIXED required value: o-p60fail4 1`] = ` -"Parsing document failed, expected one of \\"#REQUIRED\\", \\"#IMPLIED\\", '\\"', \\"'\\" +"Parsing document failed, expected one of \\"#REQUIRED\\", \\"#IMPLIED\\", \\"quoted attribute value\\" At line 4, character 25: @@ -6097,7 +6097,7 @@ At line 1, character 10: `; exports[`XML Conformance Test Suite OASIS/NIST XML 1.0 Tests o-p66fail5 - no references to non-characters: o-p66fail5 1`] = ` -"Parsing document failed, expected \\"end of input\\" +"Parsing document failed, expected \\"character reference must reference a valid character\\" At line 1, character 6:  @@ -6105,7 +6105,7 @@ At line 1, character 6: `; exports[`XML Conformance Test Suite OASIS/NIST XML 1.0 Tests o-p66fail6 - no references to non-characters: o-p66fail6 1`] = ` -"Parsing document failed, expected \\"end of input\\" +"Parsing document failed, expected \\"character reference must reference a valid character\\" At line 1, character 6: �� @@ -6300,7 +6300,7 @@ At line 3, character 30: `; exports[`XML Conformance Test Suite OASIS/NIST XML 1.0 Tests o-p75fail1 - S required after "PUBLIC": o-p75fail1 1`] = ` -"Parsing document failed, expected one of \\"SYSTEM\\", \\"PUBLIC\\" +"Parsing document failed, expected \\"whitespace\\" At line 3, character 20: @@ -6308,7 +6308,7 @@ At line 3, character 20: `; exports[`XML Conformance Test Suite OASIS/NIST XML 1.0 Tests o-p75fail2 - S required after "SYSTEM": o-p75fail2 1`] = ` -"Parsing document failed, expected one of \\"SYSTEM\\", \\"PUBLIC\\" +"Parsing document failed, expected \\"whitespace\\" At line 3, character 20: @@ -6548,7 +6548,7 @@ At line 3, character 3: `; exports[`XML Conformance Test Suite Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003 rmt-ns10-043 - Colon in entity name: rmt-ns10-043 1`] = ` -"Parsing document failed, expected \\">\\" +"Parsing document failed, expected \\"name must not contain colon\\" At line 5, character 10: @@ -6588,7 +6588,7 @@ At line 6, character 2: `; exports[`XML Conformance Test Suite Sun Microsystems XML Tests error uri01 - SYSTEM ids may not have URI fragments: uri01 1`] = ` -"Parsing document failed, expected one of \\"SYSTEM\\", \\"PUBLIC\\" +"Parsing document failed, expected \\"system identifier must not contain a fragment identifier\\" At line 4, character 21: @@ -6596,7 +6596,7 @@ At line 4, character 21: `; exports[`XML Conformance Test Suite Sun Microsystems XML Tests not-wf attlist01 - SGML's NUTOKEN is not allowed.: attlist01 1`] = ` -"Parsing document failed, expected \\")\\" +"Parsing document failed, expected one of \\"CDATA\\", \\"IDREFS\\", \\"IDREF\\", \\"ID\\", \\"ENTITY\\", \\"ENTITIES\\", \\"NMTOKENS\\", \\"NMTOKEN\\", \\"NOTATION\\", \\"(\\" At line 7, character 9: number NUTOKEN \\"1\\" @@ -6604,7 +6604,7 @@ At line 7, character 9: `; exports[`XML Conformance Test Suite Sun Microsystems XML Tests not-wf attlist02 - SGML's NUTOKENS attribute type is not allowed.: attlist02 1`] = ` -"Parsing document failed, expected \\")\\" +"Parsing document failed, expected one of \\"CDATA\\", \\"IDREFS\\", \\"IDREF\\", \\"ID\\", \\"ENTITY\\", \\"ENTITIES\\", \\"NMTOKENS\\", \\"NMTOKEN\\", \\"NOTATION\\", \\"(\\" At line 7, character 9: number NUTOKENS \\"1 2 3\\" @@ -6620,7 +6620,7 @@ At line 7, character 11: `; exports[`XML Conformance Test Suite Sun Microsystems XML Tests not-wf attlist04 - SGML's NUMBER attribute type is not allowed.: attlist04 1`] = ` -"Parsing document failed, expected \\")\\" +"Parsing document failed, expected one of \\"CDATA\\", \\"IDREFS\\", \\"IDREF\\", \\"ID\\", \\"ENTITY\\", \\"ENTITIES\\", \\"NMTOKENS\\", \\"NMTOKEN\\", \\"NOTATION\\", \\"(\\" At line 7, character 9: number NUMBER \\"1\\" @@ -6628,7 +6628,7 @@ At line 7, character 9: `; exports[`XML Conformance Test Suite Sun Microsystems XML Tests not-wf attlist05 - SGML's NUMBERS attribute type is not allowed.: attlist05 1`] = ` -"Parsing document failed, expected \\")\\" +"Parsing document failed, expected one of \\"CDATA\\", \\"IDREFS\\", \\"IDREF\\", \\"ID\\", \\"ENTITY\\", \\"ENTITIES\\", \\"NMTOKENS\\", \\"NMTOKEN\\", \\"NOTATION\\", \\"(\\" At line 7, character 10: numbers NUMBERS \\"1 2 3 4\\" @@ -6636,7 +6636,7 @@ At line 7, character 10: `; exports[`XML Conformance Test Suite Sun Microsystems XML Tests not-wf attlist06 - SGML's NAME attribute type is not allowed.: attlist06 1`] = ` -"Parsing document failed, expected \\")\\" +"Parsing document failed, expected one of \\"CDATA\\", \\"IDREFS\\", \\"IDREF\\", \\"ID\\", \\"ENTITY\\", \\"ENTITIES\\", \\"NMTOKENS\\", \\"NMTOKEN\\", \\"NOTATION\\", \\"(\\" At line 7, character 9: number NAME \\"Elvis\\" @@ -6644,7 +6644,7 @@ At line 7, character 9: `; exports[`XML Conformance Test Suite Sun Microsystems XML Tests not-wf attlist07 - SGML's NAMES attribute type is not allowed.: attlist07 1`] = ` -"Parsing document failed, expected \\")\\" +"Parsing document failed, expected one of \\"CDATA\\", \\"IDREFS\\", \\"IDREF\\", \\"ID\\", \\"ENTITY\\", \\"ENTITIES\\", \\"NMTOKENS\\", \\"NMTOKEN\\", \\"NOTATION\\", \\"(\\" At line 7, character 9: number NAMES \\"The King\\" @@ -6652,7 +6652,7 @@ At line 7, character 9: `; exports[`XML Conformance Test Suite Sun Microsystems XML Tests not-wf attlist08 - SGML's #CURRENT is not allowed.: attlist08 1`] = ` -"Parsing document failed, expected one of \\"#REQUIRED\\", \\"#IMPLIED\\", '\\"', \\"'\\" +"Parsing document failed, expected one of \\"#REQUIRED\\", \\"#IMPLIED\\", \\"quoted attribute value\\" At line 7, character 17: language CDATA #CURRENT @@ -6660,7 +6660,7 @@ At line 7, character 17: `; exports[`XML Conformance Test Suite Sun Microsystems XML Tests not-wf attlist09 - SGML's #CONREF is not allowed.: attlist09 1`] = ` -"Parsing document failed, expected one of \\"#REQUIRED\\", \\"#IMPLIED\\", '\\"', \\"'\\" +"Parsing document failed, expected one of \\"#REQUIRED\\", \\"#IMPLIED\\", \\"quoted attribute value\\" At line 5, character 17: language CDATA #CONREF @@ -6668,7 +6668,7 @@ At line 5, character 17: `; exports[`XML Conformance Test Suite Sun Microsystems XML Tests not-wf attlist10 - Whitespace required between attributes: attlist10 1`] = ` -"Parsing document failed, expected one of \\"/>\\", \\">\\" +"Parsing document failed, expected \\">\\" At line 6, character 20: @@ -6676,7 +6676,7 @@ At line 6, character 20: `; exports[`XML Conformance Test Suite Sun Microsystems XML Tests not-wf attlist11 - Whitespace required between attributes: attlist11 1`] = ` -"Parsing document failed, expected one of \\"/>\\", \\">\\" +"Parsing document failed, expected \\">\\" At line 6, character 20: @@ -6724,7 +6724,7 @@ At line 5, character 5: `; exports[`XML Conformance Test Suite Sun Microsystems XML Tests not-wf dtd04 - PUBLIC literal must be quoted: dtd04 1`] = ` -"Parsing document failed, expected one of \\"SYSTEM\\", \\"PUBLIC\\" +"Parsing document failed, expected one of '\\"', \\"'\\" At line 4, character 25: @@ -6732,7 +6732,7 @@ At line 4, character 25: `; exports[`XML Conformance Test Suite Sun Microsystems XML Tests not-wf dtd05 - SYSTEM identifier must be quoted: dtd05 1`] = ` -"Parsing document failed, expected one of \\"SYSTEM\\", \\"PUBLIC\\" +"Parsing document failed, expected one of '\\"', \\"'\\" At line 4, character 25: @@ -6744,7 +6744,7 @@ exports[`XML Conformance Test Suite Sun Microsystems XML Tests not-wf element00 At line 3, character 5: ): element02 1`] = ` @@ -6991,378 +6991,378 @@ At line 3, character 23: exports[`XML Conformance Test Suite University of Edinburgh tests for XML 1.0 5th edition x-ibm-1-0.5-not-wf-P04-ibm04n02.xml - Tests an element with an illegal NameStartChar: #0x333: x-ibm-1-0.5-not-wf-P04-ibm04n02.xml 1`] = ` "Parsing document failed, expected \\"valid name start character\\" -At line 1, character 2: +At line 1, character 11: \\" +At line 1, character 26: \\" +At line 1, character 26: \\" +At line 1, character 26: \\" +At line 1, character 26: \\" +At line 1, character 26: \\" +At line 1, character 26: \\" +At line 1, character 26: \\" +At line 1, character 26: \\" +At line 1, character 26: \\" +At line 1, character 26: \\" +At line 1, character 26: \\" +At line 1, character 26: \\" +At line 1, character 26: \\" +At line 1, character 26: \\" +At line 1, character 26: \\" +At line 1, character 26: \\" +At line 1, character 26: \\" +At line 1, character 26: \\" +At line 1, character 26: \\" +At line 1, character 26: \\" +At line 1, character 26: \\" +At line 1, character 26: \\" +At line 1, character 26: \\" +At line 1, character 26: { Hello `; expect(() => slimdom.parseXmlDocument(xml)).toThrowErrorMatchingInlineSnapshot(` - "Parsing document failed, expected one of \\"/>\\", \\">\\" + "Parsing document failed, expected \\">\\" At line 3, character 10: Hello @@ -241,7 +241,7 @@ describe('parseXmlDocument', () => { it('returns an error if an element has a name containing an invalid character', () => { const xml = ``; expect(() => slimdom.parseXmlDocument(xml)).toThrowErrorMatchingInlineSnapshot(` - "Parsing document failed, expected one of \\"/>\\", \\">\\" + "Parsing document failed, expected \\">\\" At line 1, character 4: @@ -274,7 +274,7 @@ describe('parseXmlDocument', () => { it('returns an error if an entity has a name that contains a colon', () => { const xml = `]>`; expect(() => slimdom.parseXmlDocument(xml)).toThrowErrorMatchingInlineSnapshot(` - "Parsing document failed, expected one of \\"name must not contain colon\\", \\"%\\" + "Parsing document failed, expected \\"name must not contain colon\\" At line 1, character 26: ]> @@ -412,7 +412,7 @@ describe('parseXmlDocument', () => { it('returns an error for entities that expand to content that does not match the content production', () => { const xml = `]>&wrong;`; expect(() => slimdom.parseXmlDocument(xml)).toThrowErrorMatchingInlineSnapshot(` - "Parsing replacement text for entity wrong failed, expected one of \\"/>\\", \\">\\" + "Parsing replacement text for entity wrong failed, expected one of \\">\\", \\"/>\\" At line 1, character 3: ]>&wrong; @@ -430,7 +430,7 @@ describe('parseXmlDocument', () => { it('returns an error for entity references in element tags', () => { const xml = `]>`; expect(() => slimdom.parseXmlDocument(xml)).toThrowErrorMatchingInlineSnapshot(` - "Parsing document failed, expected one of \\"/>\\", \\">\\" + "Parsing document failed, expected \\">\\" At line 1, character 54: ]> @@ -666,7 +666,7 @@ describe('parseXmlDocument', () => { At line 1, character 1: - " + ^" `); });