XML2RFC Test CasesJ. F. Reschke
greenbytes
April 2024

Test cases for XML2RFC formatting



1. Lists

1.1. hanging list

1.1.1. default

default

A:
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
AB:
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
ABC:
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
ABCD:
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
ABCDE:
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
ABCDEF:
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.

compact="yes"

A:
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
AB:
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
ABC:
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
ABCD:
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
ABCDE:
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
ABCDEF:
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.

compact="yes" subcompact="yes"

A:
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
AB:
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
ABC:
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
ABCD:
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
ABCDE:
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
ABCDEF:
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.

compact="yes" subcompact="no"

A:
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
AB:
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
ABC:
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
ABCD:
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
ABCDE:
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
ABCDEF:
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.

compact="no" subcompact="yes"

A:
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
AB:
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
ABC:
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
ABCD:
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
ABCDE:
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
ABCDEF:
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.

compact="no" subcompact="no"

A:
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
AB:
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
ABC:
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
ABCD:
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
ABCDE:
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
ABCDEF:
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.

compact="no" subcompact="yes", empty entries

A:
 
AB:
 
ABC:
 
ABCD:
 
ABCDE:
 

1.1.2. hanging list with hangIndent 7

0
0
01
01
012
012
0123
0123
01234
01234
012345
012345
0123456
0123456
01234567
01234567
012345678
012345678
0123456789
0123456789

1.1.3. hanging list with hangIndent 0

0
0
01
01
012
012
0123
0123
01234
01234
012345
012345
0123456
0123456
01234567
01234567
012345678
012345678
0123456789
0123456789

1.2. numbered list

A numbered list:

  1. one
  2. two
  3. three

1.3. ordered list (letters)

An ordered list using letters:

  1. one
  2. two
  3. three
  4. one
  5. two
  6. three
  7. one
  8. two
  9. three
  10. one
  11. two
  12. three
  13. one
  14. two
  15. three
  16. one
  17. two
  18. three
  19. one
  20. two
  21. three
  22. one
  23. two
  24. three
  25. one
  26. two
  27. three
  28. one
  29. two
  30. three

1.4. no explicit counters

Example for numbered list with user-defined-format:

R1:
R1
R2:
R2

Another list:

S1:
S1
S2:
S2

Same with character-based numbering:

c-a:
c-a
c-b:
c-b

1.5. with explicit counters

A few requirements:

R1:
req R1
R2:
req R2

More requirements:

R3:
req R3
R4:
req R4

A few rules:

R1:
rule R1
R2:
rule R2
R3:
rule R3

1.6. Nested lists

1.6.1. numbers/letters

  1. One
  2. Two
    1. 17
    2. 42
  3. Three

1.6.2. numbers/numbers

  1. One
  2. Two
    1. 17
    2. 42
  3. Three
    1. 17
    2. 42

1.6.3. letters/letters

  1. One
  2. Two
    1. 17
    2. 42
  3. Three

1.6.4. letters/letters/letters

  1. One
  2. Two
    1. 17
    2. 42
      1. X
      2. Y
  3. Three

1.6.5. symbols/symbols/symbols

  • One
  • Two
    • 17
    • 42
      • X
      • Y
  • Three

1.6.6. hanging/hanging

ABC
One
GHI
One
JKL
Two
DEF
 
MNO
Three
PQR
Four

1.7. list without style

No style attribute:

  • One
  • Two
  • Three

1.8. list with multiple paragraphs in a single list item

  1. Simple list item.

  2. This one has two paragraphs. This is the first one.

    This one has two paragraphs. This is the second one.

  3. Another simple list item.

1.9. style=format...

1.9.1. lists with fancy formats: %c

a
test

1.9.2. lists with fancy formats: %C

A
test

1.9.3. lists with fancy formats: %d

1
test

1.9.4. lists with fancy formats: %i

i
test

1.9.5. lists with fancy formats: %I

I
test

1.9.6. lists with fancy formats: %o

test

1.9.7. lists with fancy formats: %x

test

1.9.8. lists with fancy formats: %X

test

1.9.9. lists with fancy formats: %% %d

% 1
test

1.9.10. lists with fancy formats: REQUIREMENT-%i plus hangIndent=20

REQUIREMENT-i
test
REQUIREMENT-ii
test
REQUIREMENT-iii
test
REQUIREMENT-iv
test
REQUIREMENT-v
test
REQUIREMENT-vi
test
REQUIREMENT-vii
test
REQUIREMENT-viii
test
REQUIREMENT-ix
test
REQUIREMENT-x
test
REQUIREMENT-xi
test

1.9.11. lists with fancy formats: %c.

a.
test

1.9.12. lists with fancy formats: %C.

A.
test

1.9.13. lists with fancy formats: %d.

1.
test

1.9.14. lists with fancy formats: %i.

i.
test

1.9.15. lists with fancy formats: %I.

I.
test

1.10. style inheritance

Numbers:

  1. test
  2. test
  3. test
  4. Nested, without style:
    1. test
    2. test
    3. test

Symbols:

  • test
  • test
  • test
  • Nested, without style:
    • test
    • test
    • test

Letters:

  1. test
  2. test
  3. test
  4. Nested, without style:
    1. test
    2. test
    3. test

Empty:

  • test
  • test
  • test
  • Nested, without style:
    • test
    • test
    • test

1.11. v3 list extensions

1.11.1. dl/spacing

regular dl

dt
dd
dt
dd

dl/spacing=normal

dt
dd
dt
dd

dl/spacing=compact

dt
dd
dt
dd

1.11.2. ul/spacing

regular ul

  • X
  • Y

ul/spacing=normal

  • X
  • Y

ul/spacing=compact

  • X
  • Y

2. spanx

This is default.

This is emph(asized).

This is strong.

This is verb(atim).

Here is a carriage return inside a spanx element.


3. Tables

The list of valid keywords are:

keyworddefaultmeaningnot aligned
strictnotry to enforce the ID-nits conventions and DTD validitya
iprnotifiednoinclude boilerplate from Section 10.4(d) of [RFC2026]bb bb
compactnowhen producing a txt/nroff file, try to conserve vertical whitespaceccc ccc ccc
subcompactcompactif compact is "yes", then setting this to "no" will make things a little less compactdddd dddd dddd dddd
needLinesn/aan integer hint indicating how many contiguous lines are needed at this point in the outputeeeee eeeee eeeee eeeee eeeee
here come empty cells

Remember, that as with everything else in XML, keywords and values are case-sensitive.

3.1. no borders

The table below should appear with no borders.

Table 1: a table with no borders
C1C2
1112
2122

3.2. borders around headers

The table below should appear with borders just around the headers.

C1C2
1112
2122

3.3. example from xml2rc README

So, putting it all together, we have, e.g.,

Table 2
ttcol #1ttcol #2
c #1c #2
c #3c #4
c #5c #6

which is a very simple example.

3.4. no column titles

The table below should appear with no titles.

Table 3: a table with no column titles
1112
2122

The table below should appear with column titles (one being non-empty).

Table 4: a table with a single column title
FOO
1112
2122

3.5. referencing tables

Table 1 shows a table with no borders.

The table above shows a table with no borders.

3.6. table captions

No anchor, no title

AnchorTitle
--

Anchor (not being referenced), no title

Table 5
AnchorTitle
yes-

No anchor, with title

title
AnchorTitle
-"title"

Both anchor and title

Table 6: title
AnchorTitle
yes"title"

anchor, suppress-title, and in use

AnchorTitle
yes-

Table above is: Table 7.

3.7. single column

title
1
2

3.8. empty body

title

3.9. table alignment

3.9.1. left

left-aligned table
left
1

3.9.2. center

centered table
center
1

3.9.3. right

right-aligned table
right
1

3.9.4. default

default-aligned table
default
1

4. Figures

4.1. with preamble, no title...

with preamble, no title...

  +--+
  |  |
  +--+

4.2. with postamble and title...

  +--+
  |  |
  +--+

with postamble and title...

Figure 2: another figure

The figure above has the title "another figure".

4.3. Whitespace handling

Para...

Leading whitespace

test test (leading ws)

Para...

Trailing whitespace

test test (trailing ws)
   

Para...

No whitespace

test test (no ws)

Para...

4.4. Whitespace around figures

spacing paragraph

ART

spacing paragraph

preamble, then

ART

spacing paragraph

ART

then postamble

spacing paragraph

4.5. data URIs

4.5.1. data URI as source (both @alt and text content)

Portrait of Larry Masinter (contents of alt attribute)

4.5.2. data URI as source (only text content, no @alt)


    Portrait of Larry Masinter (text content of <artwork> element)

4.5.3. data URI as source (only @alt attribute)

Portrait of Larry Masinter (contents of alt attribute)

4.6. alignment

4.6.1. left

preamble

postamble

preamble

FOO

postamble

4.6.2. right

preamble

postamble

preamble

FOO

postamble

4.6.3. center

preamble

postamble

preamble

FOO

postamble

4.6.4. default

preamble

postamble

preamble

FOO

postamble

4.7. artwork width/height

4.7.1. width50%

4.7.2. width50

4.7.3. height50

4.7.4. height30width60

4.8. figure/artwork attribute overlap

4.8.1. src overlap

Both figure and artwork having @src:

Preamble...

4.8.2. align overlap

figure/align=right, artwork/@align=center:

Preamble...

TEST
  

Postamble...

Figure 25: title

4.8.3. align inheritance

figure/align=right, artwork/@align not specified:

Preamble...

TEST
  

Postamble...

Figure 26: title

4.9. titles/numbering

4.9.1. just anchor

FOO

Figure 27

4.9.2. just anchor (with suppress)

FOO

Above is Figure 28.

4.9.3. just title

FOO

Figure 29: figure title

4.9.4. just title (with suppress)

FOO

Figure 30: figure title

4.10. SVG

Inclusion of SVG:


  Fallback content for UAs that do not support SVG.

4.11. Code Components

Marking up Code Components according to the Legal Provisions Relating to IETF Documents:

Using @x:is-code-component

<CODE BEGINS>
int main(int argc, char **argv) {
  return -1;
}
<CODE ENDS>

Using @markers

<CODE BEGINS>
int main(int argc, char **argv) {
  return -1;
}
<CODE ENDS>

Using @markers and @name

<CODE BEGINS> file "abc.c"
int main(int argc, char **argv) {
  return -1;
}
<CODE ENDS>

4.12. Line Folding

Marking up sourcecode using [RFC8792]:

Single \

NOTE: '\' line wrapping per RFC 8792
012345678901234567890123456789012345678901234567890123456789\
01234567890123456789

or:

NOTE: '\' line wrapping per RFC 8792
012345678901234567890123456789012345678901234567890123456789\
      01234567890123456789

Double \

NOTE: '\\' line wrapping per RFC 8792
012345678901234567890123456789012345678901234567890123456789\
      \01234567890123456789

or (error case)

NOTE: '\\' line wrapping per RFC 8792
012345678901234567890123456789012345678901234567890123456789\
      01234567890123456789

4.13. inside <t>

FOOBAR

5. xrefs

This section contains test cases for <xref/>, testing 9 different types of targets. Each target is tested for all possible values of the @format attribute, and for <xref/> elements with and without content. These tests were contributed by Erik Wilde.

5.1. Tests for section-anchor

<xref target="section-anchor"/>: Section 5.11

<xref target="section-anchor">TEXT-CONTENT</xref>: TEXT-CONTENT (Section 5.11)

<xref format="counter" target="section-anchor"/>: 5.11

<xref format="counter" target="section-anchor">TEXT-CONTENT</xref>: TEXT-CONTENT (5.11)

<xref format="title" target="section-anchor"/>: Test Targets

<xref format="title" target="section-anchor">TEXT-CONTENT</xref>: TEXT-CONTENT (Test Targets)

<xref format="none" target="section-anchor"/>:

<xref format="none" target="section-anchor">TEXT-CONTENT</xref>: TEXT-CONTENT

<xref format="default" target="section-anchor"/>: Section 5.11

<xref format="default" target="section-anchor">TEXT-CONTENT</xref>: TEXT-CONTENT (Section 5.11)

5.2. Tests for t-anchor

<xref target="t-anchor"/>: Paragraph 2

<xref target="t-anchor">TEXT-CONTENT</xref>: TEXT-CONTENT

<xref format="counter" target="t-anchor"/>: 5.11.p.2

<xref format="counter" target="t-anchor">TEXT-CONTENT</xref>: TEXT-CONTENT

<xref format="title" target="t-anchor"/>: t-anchor

<xref format="title" target="t-anchor">TEXT-CONTENT</xref>: TEXT-CONTENT

<xref format="none" target="t-anchor"/>:

<xref format="none" target="t-anchor">TEXT-CONTENT</xref>: TEXT-CONTENT

<xref format="default" target="t-anchor"/>: Paragraph 2

<xref format="default" target="t-anchor">TEXT-CONTENT</xref>: TEXT-CONTENT

5.3. Tests for list-t-anchor-empty

<xref target="list-t-anchor-empty"/>: Paragraph 1

<xref target="list-t-anchor-empty">TEXT-CONTENT</xref>: TEXT-CONTENT

<xref format="counter" target="list-t-anchor-empty"/>: 5.11.p.1

<xref format="counter" target="list-t-anchor-empty">TEXT-CONTENT</xref>: TEXT-CONTENT

<xref format="title" target="list-t-anchor-empty"/>: list-t-anchor-empty

<xref format="title" target="list-t-anchor-empty">TEXT-CONTENT</xref>: TEXT-CONTENT

<xref format="none" target="list-t-anchor-empty"/>:

<xref format="none" target="list-t-anchor-empty">TEXT-CONTENT</xref>: TEXT-CONTENT

<xref format="default" target="list-t-anchor-empty"/>: Paragraph 1

<xref format="default" target="list-t-anchor-empty">TEXT-CONTENT</xref>: TEXT-CONTENT

5.4. Tests for list-t-anchor-numbers

<xref target="list-t-anchor-numbers"/>: Paragraph 1

<xref target="list-t-anchor-numbers">TEXT-CONTENT</xref>: TEXT-CONTENT

<xref format="counter" target="list-t-anchor-numbers"/>: 1

<xref format="counter" target="list-t-anchor-numbers">TEXT-CONTENT</xref>: TEXT-CONTENT

<xref format="title" target="list-t-anchor-numbers"/>: list-t-anchor-numbers

<xref format="title" target="list-t-anchor-numbers">TEXT-CONTENT</xref>: TEXT-CONTENT

<xref format="none" target="list-t-anchor-numbers"/>:

<xref format="none" target="list-t-anchor-numbers">TEXT-CONTENT</xref>: TEXT-CONTENT

<xref format="default" target="list-t-anchor-numbers"/>: Paragraph 1

<xref format="default" target="list-t-anchor-numbers">TEXT-CONTENT</xref>: TEXT-CONTENT

5.5. Tests for list-t-anchor-letters

<xref target="list-t-anchor-letters"/>: Paragraph 1

<xref target="list-t-anchor-letters">TEXT-CONTENT</xref>: TEXT-CONTENT

<xref format="counter" target="list-t-anchor-letters"/>: a

<xref format="counter" target="list-t-anchor-letters">TEXT-CONTENT</xref>: TEXT-CONTENT

<xref format="title" target="list-t-anchor-letters"/>: list-t-anchor-letters

<xref format="title" target="list-t-anchor-letters">TEXT-CONTENT</xref>: TEXT-CONTENT

<xref format="none" target="list-t-anchor-letters"/>:

<xref format="none" target="list-t-anchor-letters">TEXT-CONTENT</xref>: TEXT-CONTENT

<xref format="default" target="list-t-anchor-letters"/>: Paragraph 1

<xref format="default" target="list-t-anchor-letters">TEXT-CONTENT</xref>: TEXT-CONTENT

5.6. Tests for list-t-anchor-hanging

<xref target="list-t-anchor-hanging"/>: Paragraph 1

<xref target="list-t-anchor-hanging">TEXT-CONTENT</xref>: TEXT-CONTENT

<xref format="counter" target="list-t-anchor-hanging"/>: 1

<xref format="counter" target="list-t-anchor-hanging">TEXT-CONTENT</xref>: TEXT-CONTENT

<xref format="title" target="list-t-anchor-hanging"/>: foobar

<xref format="title" target="list-t-anchor-hanging">TEXT-CONTENT</xref>: TEXT-CONTENT

<xref format="none" target="list-t-anchor-hanging"/>:

<xref format="none" target="list-t-anchor-hanging">TEXT-CONTENT</xref>: TEXT-CONTENT

<xref format="default" target="list-t-anchor-hanging"/>: Paragraph 1

<xref format="default" target="list-t-anchor-hanging">TEXT-CONTENT</xref>: TEXT-CONTENT

5.7. Tests for texttable-anchor

<xref target="texttable-anchor"/>: Table 8

<xref target="texttable-anchor">TEXT-CONTENT</xref>: TEXT-CONTENT

<xref format="counter" target="texttable-anchor"/>: 8

<xref format="counter" target="texttable-anchor">TEXT-CONTENT</xref>: TEXT-CONTENT

<xref format="title" target="texttable-anchor"/>: TEXTTABLE-TITLE

<xref format="title" target="texttable-anchor">TEXT-CONTENT</xref>: TEXT-CONTENT

<xref format="none" target="texttable-anchor"/>:

<xref format="none" target="texttable-anchor">TEXT-CONTENT</xref>: TEXT-CONTENT

<xref format="default" target="texttable-anchor"/>: Table 8

<xref format="default" target="texttable-anchor">TEXT-CONTENT</xref>: TEXT-CONTENT

5.8. Tests for figure-anchor

<xref target="figure-anchor"/>: Figure 34

<xref target="figure-anchor">TEXT-CONTENT</xref>: TEXT-CONTENT

<xref format="counter" target="figure-anchor"/>: 34

<xref format="counter" target="figure-anchor">TEXT-CONTENT</xref>: TEXT-CONTENT

<xref format="title" target="figure-anchor"/>: FIGURE-TITLE

<xref format="title" target="figure-anchor">TEXT-CONTENT</xref>: TEXT-CONTENT

<xref format="none" target="figure-anchor"/>:

<xref format="none" target="figure-anchor">TEXT-CONTENT</xref>: TEXT-CONTENT

<xref format="default" target="figure-anchor"/>: Figure 34

<xref format="default" target="figure-anchor">TEXT-CONTENT</xref>: TEXT-CONTENT

5.9. Tests for reference-anchor

<xref target="reference-anchor"/>: [reference-anchor]

<xref target="reference-anchor">TEXT-CONTENT</xref>: TEXT-CONTENT [reference-anchor]

<xref format="counter" target="reference-anchor"/>: reference-anchor

<xref format="counter" target="reference-anchor">TEXT-CONTENT</xref>: TEXT-CONTENT [reference-anchor]

<xref format="title" target="reference-anchor"/>: Test cases for XML2RFC formatting

<xref format="title" target="reference-anchor">TEXT-CONTENT</xref>: TEXT-CONTENT [reference-anchor]

<xref format="none" target="reference-anchor"/>:

<xref format="none" target="reference-anchor">TEXT-CONTENT</xref>: TEXT-CONTENT

<xref format="default" target="reference-anchor"/>: [reference-anchor]

<xref format="default" target="reference-anchor">TEXT-CONTENT</xref>: TEXT-CONTENT [reference-anchor]

5.10. Tests for cref-anchor

<xref target="cref-anchor"/>: Comment cref-anchor

<xref target="cref-anchor">TEXT-CONTENT</xref>: TEXT-CONTENT

<xref format="counter" target="cref-anchor"/>: cref-anchor

<xref format="counter" target="cref-anchor">TEXT-CONTENT</xref>: TEXT-CONTENT

<xref format="title" target="cref-anchor"/>: cref-anchor

<xref format="title" target="cref-anchor">TEXT-CONTENT</xref>: TEXT-CONTENT

<xref format="none" target="cref-anchor"/>:

<xref format="none" target="cref-anchor">TEXT-CONTENT</xref>: TEXT-CONTENT

<xref format="default" target="cref-anchor"/>: Comment cref-anchor

<xref format="default" target="cref-anchor">TEXT-CONTENT</xref>: TEXT-CONTENT

5.11. Test Targets

This section contains a couple of markup constructs carrying anchors (this is paragraph 1).

Some regular paragraph text... (this is paragraph 2)

  • Some paragraph in a list... (this is list item 1 in a default style list)
  1. Some paragraph in a list... (this is list item 1 in a "numbers" style list)
  1. Some paragraph in a list... (this is list item 1 in a "letters" style list)
foobar
Some paragraph in a list... (this is list item 1 in a "hanging" style list)
Table 8: TEXTTABLE-TITLE
Some texttable text...
Table cell
Some figure text...

Figure 34: FIGURE-TITLE


6. More References

6.1. xref to named <spanx> element

With content: see this sentence.

6.2. xref with no content and counter formatting

6.3. eref with no content

6.4. eref with content

6.5. iref inside paragraph

This paragraph contains an inline iref.

6.6. iref before paragraph

This paragraph follows an iref.

6.7. iref at start of paragraph with list

  • foo

6.8. xref with pageno attribute

A reference to Section 6.8.

6.9. xref in section title: RFC 2396

Bar.

6.10. xref with x:fmt='none'

plain text.

6.11. xref with markup in context

6.12. iref elements with non-normalized whitespace

With normalized whitespace.

With leading whitespace.

With trailing whitespace.

With extra inline whitespace.


7. Paragraph formatting

This is the first sentence of the paragraph. This is the second sentence of the paragraph (with two leading blanks). Here's another sentence that was started on a separate line in the input file.

This is the second paragraph.

This paragraph has ignorable whitespace (but also contains processing instructions).

This paragraph has ignorable whitespace (but also contains processing instructions).

This paragraph has ignorable whitespace (but also contains processing instructions).

This paragraph has ignorable whitespace (but also contains comments).

This paragraph has ignorable whitespace (but also contains comments).

This paragraph has ignorable whitespace (but also contains comments).

This paragraph has ignorable whitespace (but also contains non-text-generating XML nodes).

This paragraph has ignorable whitespace (but also contains non-text-generating XML nodes).


8. Sections

8.1. Subsection with TOC entry

8.2. Subsection without TOC entry

8.2.1. Sub-subsection with TOC entry

8.3. x.x

8.3.1. x.x.x

8.3.1.1. x.x.x.x
8.3.1.1.1. x.x.x.x.x
8.3.1.1.1.1. x.x.x.x.x.x
8.3.1.1.1.1.1. x.x.x.x.x.x.x
8.3.1.1.1.1.1.1. x.x.x.x.x.x.x.x

9. Comments

This line contains a few comments. [comment-test] This line contains a few comments. [comment1] This line contains a few comments. [comment2] This line contains a few comments. [rfc.comment.1] This line contains a few comments. [rfc.comment.2] This line contains a few comments.

[rfc.comment.3]


10. Artwork Width

This should fit (69 characters plus three spaces of indentation in text output).

012345678901234567890123456789012345678901234567890123456789012345678

This shouldn't.

0123456789012345678901234567890123456789012345678901234567890123456789
(IN TEXT OUTPUT INDENTED BY 10)
012345678901234567890123456789012345678901234567890123456789012

11. Extensions

These are tests for extensions done in rfc2629.xslt. Do not expect them to work out-of-the-box in xml2rfc.

11.1. Markup in figure/artwork

Internal References: a test reference to [RFC2396]

External References: a test reference to <http://xml.resource.org>

a test index entry inside a figure

Styling: <spanx> inside artwork

11.2. Measuring Lengths

PUT / HTTP/1.1
Host: example.org
Content-Type: application/xml
Content-Length: 6

<foo/>

...without indentation:

PUT / HTTP/1.1
Host: example.org
Content-Type: text/plain
Content-Length: 16

Line 1
Line 2

...with indentation:

  PUT / HTTP/1.1
  Host: example.org
  Content-Type: text/plain
  Content-Length: 16

  Line 1
  Line 2

11.3. Quotations

Here's a quote: This is a Quote.

Here's a block level quote:

Here's a quote.

More text.

11.4. Subsections

Foo

The line above should be marked up similar to a subsection heading.

11.5. Box Drawing

The figure below should use box drawing characters instead of "+", "-" and "|".

  ┌────────────────┐
  │ This is a Box. │
  └────────────────┘
  

11.6. Computed Reference Targets

Referring to this section by anchor name indirectly through the references: Section 11.6 of [TSTCS].

(default formatting): Section 11.6 of [TSTCS].

  Default inside a figure: [TSTCS], Section 11.6

With a broken anchor: Part ERROR: Anchor 'a-target-that-isnt-defined' in TSTCS not found in source file 'testcase.xml'. (at line 1685) of [TSTCS].

To unnumbered section: Appendix "Contributors" of [TSTCS].

To paragraph: Section 11.6 of [TSTCS].

11.7. ABNF Support

11.7.1. Expanding strings

case-insensitive1 = "abcdefghijlkmnopqrstuvwxyz"
case-insensitive2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
case-sensitive1 = %x61.62.63.64.65.66.67.68.69.6A.6C.6B.6D.6E.6F.70.71.72.73.74.75.76.77.78.79.7A
case-sensitive2 = %x41.42.43.44.45.46.47.48.49.4A.4B.4C.4D.4E.4F.50.51.52.53.54.55.56.57.58.59.5A

11.7.2. Highlighting

Extensions from RFC 9110:

x = 1#2y

Extensions from RFC 7405:

x = %s"case-sensitive"
y = %i"case-insensitive"

Literals:

binary = %b00-11 %b00.01.10.11
dec    = %d13.10
hex    = %x0F.0A
DIGIT  = %x30-39
DIGIT2 = %x30.31.32.33.34.35.36.37.38.39
; comment
string = "abcde <y>"
string = "foo;bar"

Broken literals:

binary = %b00-12
DIGIT  = %x30-39-4A
string = "abcde"fgh"

Prose:

foo = <simple prose string>
bar = <with "double quotes">
qux = <with '<' inside>

Using <sourcecode>:

left = right ; comment

Broken prose and string literals:

foo = <no ABNF available,
  but that does not justify a line break>
extra = <good>bad ; comment
bar = "illegal characters in string literal: "
qux = "runaway string
qux2 = "in string literal"

11.8. Referencing extensions

Simple <x:ref>: referencing.extensions.

Aliased <x:ref>: Referencing extensions.


12. Blank Lines

Just a forced
line break.

One

blank line.

Seven







blank lines.

999
blank lines (this is likely an attempt to force a pagebreak, thus the generated HTML should not contain the blank lines, but only one).


13. Other

13.1. Comments in Text

First sentence (before XML comment, invisible here). Second sentence.

13.2. Special Characters

13.2.1. Non-Breaking Space

Non breaking space. Non breaking space. Non breaking space. Non breaking space. Non breaking space. Non breaking space. Non breaking space. Non breaking space. Non breaking space. Non breaking space. Non breaking space. Non breaking space. Non breaking space. Non breaking space. Non breaking space. Non breaking space. Non breaking space. Non breaking space. Non breaking space. Non breaking space. Non breaking space. Non breaking space.

13.2.2. Non-Breaking Hyphen

Non-breaking-hyphen. Non-breaking-hyphen. Non-breaking-hyphen. Non-breaking-hyphen. Non-breaking-hyphen. Non-breaking-hyphen. Non-breaking-hyphen. Non-breaking-hyphen. Non-breaking-hyphen. Non-breaking-hyphen. Non-breaking-hyphen. Non-breaking-hyphen. Non-breaking-hyphen. Non-breaking-hyphen. Non-breaking-hyphen. Non-breaking-hyphen. Non-breaking-hyphen. Non-breaking-hyphen. Non-breaking-hyphen. Non-breaking-hyphen. (wrt Apache FOP, see <http://mail-archives.apache.org/mod_mbox/xmlgraphics-fop-users/200905.mbox/%3C4A035745.10601@freemail.gr%3E>)

13.2.3. Dashes

mdash — with regular spaces. mdash — with regular spaces. mdash — with regular spaces. mdash — with regular spaces. mdash — with regular spaces. mdash — with regular spaces. mdash — with regular spaces. mdash — with regular spaces. mdash — with regular spaces. mdash — with regular spaces. mdash — with regular spaces. mdash — with regular spaces. mdash — with regular spaces. mdash — with regular spaces. mdash — with regular spaces. mdash — with regular spaces. mdash — with regular spaces. mdash — with regular spaces. mdash — with regular spaces. mdash — with regular spaces.

mdash—with no spaces. mdash—with no spaces. mdash—with no spaces. mdash—with no spaces. mdash—with no spaces. mdash—with no spaces. mdash—with no spaces. mdash—with no spaces. mdash—with no spaces. mdash—with no spaces. mdash—with no spaces. mdash—with no spaces. mdash—with no spaces. mdash—with no spaces. mdash—with no spaces. mdash—with no spaces. mdash—with no spaces. mdash—with no spaces. mdash—with no spaces. mdash—with no spaces. mdash—with no spaces. mdash—with no spaces. mdash—with no spaces. mdash—with no spaces. mdash—with no spaces.

mdash — with thin spaces. mdash — with thin spaces. mdash — with thin spaces. mdash — with thin spaces. mdash — with thin spaces. mdash — with thin spaces. mdash — with thin spaces. mdash — with thin spaces. mdash — with thin spaces. mdash — with thin spaces. mdash — with thin spaces. mdash — with thin spaces. mdash — with thin spaces. mdash — with thin spaces. mdash — with thin spaces. mdash — with thin spaces. mdash — with thin spaces. mdash — with thin spaces. mdash — with thin spaces. mdash — with thin spaces.

13.2.4. Non-ASCII

Expansions of "ABC":

num-lit-name
U+0041 U+0042 U+0043 ("ABC", LATIN CAPITAL LETTER A, LATIN CAPITAL LETTER B, LATIN CAPITAL LETTER C)
name-num-lit
U+0041 U+0042 U+0043 ("ABC", LATIN CAPITAL LETTER A, LATIN CAPITAL LETTER B, LATIN CAPITAL LETTER C)
name-num-lit
U+0041 U+0042 U+0043 ("ABC", LATIN CAPITAL LETTER A, LATIN CAPITAL LETTER B, LATIN CAPITAL LETTER C)
test {name} foo {lit} bar
test LATIN CAPITAL LETTER A, LATIN CAPITAL LETTER B, LATIN CAPITAL LETTER C foo "ABC" bar

14. Includes

[RFC7749].

with text content [RFC7749].

15. References

[RFC2026]
Bradner, S., “The Internet Standards Process -- Revision 3”, BCP 9, RFC 2026, DOI 10.17487/RFC2026, October 1996, <https://www.rfc-editor.org/info/rfc2026>.
[RFC10000]
Doe, J., “FUTURERFC”, RFC 10000, DOI 10.17487/RFC10000, October 2018, <https://www.rfc-editor.org/info/rfc10000>.
[RFC2396]
Berners-Lee, T., Fielding, R.T., and L. Masinter, “Uniform Resource Identifiers (URI): Generic Syntax”, RFC 2396, DOI 10.17487/RFC2396, August 1998, <https://www.rfc-editor.org/info/rfc2396>.
This RFC will soon be updated, check <http://cvs.apache.org/viewcvs.cgi/*checkout*/ietf-uri/rev-2002/rfc2396bis.html> for the latest draft. [rfc.comment.4]
The issues list is at <http://cvs.apache.org/viewcvs.cgi/*checkout*/ietf-uri/rev-2002/issues.html>.
[TSTCS]
Reschke, J., “Test cases for RFC2629 formatting”, March 2008.
[reference-anchor]
Reschke, J. F., “Test cases for XML2RFC formatting”, April 2024.
[Err607]
RFC Errata, Errata ID 607, RFC 4627, <http://www.rfc-editor.org>.
Test for Errata formatting.
[RFC7749]
Reschke, J., “The "xml2rfc" Version 2 Vocabulary”, RFC 7749, DOI 10.17487/RFC7749, February 2016, <https://www.rfc-editor.org/info/rfc7749>.
[RFC7991]
Hoffman, P., “The "xml2rfc" Version 3 Vocabulary”, RFC 7991, DOI 10.17487/RFC7991, December 2016, <https://www.rfc-editor.org/info/rfc7991>.
[I-D.iab-xml2rfcv2]
Reschke, J., “The "xml2rfc" Version 2 Vocabulary”, Internet-Draft draft-iab-xml2rfcv2-02 (work in progress), September 2015, <https://datatracker.ietf.org/doc/html/draft-iab-xml2rfcv2-02>.
[I-D.iab-xml2rfc]
Hoffman, P. E., “The "xml2rfc" Version 3 Vocabulary”, Internet-Draft draft-iab-xml2rfc-04 (work in progress), June 2016, <https://datatracker.ietf.org/doc/html/draft-iab-xml2rfc-04>.
[DOI_10.6028_NIST.SP.800-185]
Kelsey, Change, Perlner, and National Institute of Standards and Technology, “SHA-3 derived functions: cSHAKE, KMAC, TupleHash and ParallelHash”, DOI 10.6028/nist.sp.800-185, December 2016, <https://doi.org/10.6028/nist.sp.800-185>.
[RFC8792]
Watsen, K., Auerswald, E., Farrel, A., and Q. Wu, “Handling Long Lines in Content of Internet-Drafts and RFCs”, RFC 8792, DOI 10.17487/RFC8792, June 2020, <https://www.rfc-editor.org/info/rfc8792>.
[I-D.reschke-hab]
Reschke, J., “Test Renditions for new RFC Headers & Boilerplate”, Internet-Draft draft-reschke-hab-08 (work in progress), April 2011, <https://datatracker.ietf.org/doc/html/draft-reschke-hab-08>.

Editorial Comments

[cref-anchor]
A comment.
[comment-test]
No anchor, source given. --JRE
[comment1]
Anchor given, no source.
[comment2]
Both specified. --JRE
[rfc.comment.1]
No anchor, no source.
[rfc.comment.2]
No anchor, no source, but embedded markup: <http://xml.resource.org>.
[rfc.comment.3]
A comment containing <x:ref>: comments.
[rfc.comment.4]
Really?

Contributors

Test.

xref To unnumbered section within unnumbered section: Appendix "Contributors" of [TSTCS].

A. Nonymous
Example
EMail: a.nonymous@example.org

Using <contact> instead of <x:contributor>:

A. Nonymous
Example
EMail: a.nonymous@example.org

Index

E F I P R S T


Author's Address

Julian F. Reschke
greenbytes GmbH
Hafenweg 16
Muenster, 48155
Germany
Phone: +49 251 2807760
EMail: julian.reschke@greenbytes.de, julian.reschke@gmx.de
URI: http://greenbytes.de/tech/webdav/