<?xml version="1.0" encoding="US-ASCII"?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC7991 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7991.xml">
<!ENTITY I-D.asciirfc-minimal SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3//reference.I-D.draft-asciirfc-minimal-02.xml">
<!ENTITY I-D.camelot-holy-grenade SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3//reference.I-D.draft-camelot-holy-grenade-01.xml">
<!ENTITY I-D.divination-cfapi SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3//reference.I-D.draft-divination-cfapi-00.xml">
<!ENTITY I-D.wu-netmod-yang-xml-doc-conventions SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3//reference.I-D.draft-wu-netmod-yang-xml-doc-conventions-00.xml">
<!ENTITY RFC2119 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC5385 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5385.xml">
<!ENTITY RFC7328 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7328.xml">
<!ENTITY RFC7749 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7749.xml">
<!ENTITY RFC7763 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7763.xml">
<!ENTITY RFC7764 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7764.xml">
<!ENTITY RFC7990 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7990.xml">
<!ENTITY RFC7996 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7996.xml">
<!ENTITY RFC8174 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
]>
<?rfc strict="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<?rfc toc="yes"?>
<?rfc tocdepth="4"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<rfc ipr="trust200902" category="info" submissionType="independent" docName="draft-ribose-asciirfc-08">
<front>
  <title abbrev="AsciiRFC Specifications">AsciiRFC: Authoring Internet-Drafts And RFCs Using AsciiDoc</title>
  <author fullname="Ronald Henry Tse" surname="Tse" initials="R. H.">
    <organization>Ribose</organization>
    <address>
      <postal>
        <street>Suite 1111, 1 Pedder Street</street>
        <city>Central</city>
        <region>Hong Kong</region>
        <country>Hong Kong</country>
      </postal>
      <email>ronald.tse@ribose.com</email>
      <uri>https://www.ribose.com</uri>
    </address>
  </author>
  <author fullname="Nick Nicholas" surname="Nicholas" initials="N.">
    <organization>Ribose</organization>
    <address>
      <postal>
        <street/>
        <country>Australia</country>
      </postal>
      <email>nick.nicholas@ribose.com</email>
      <uri>https://www.ribose.com</uri>
    </address>
  </author>
  <author fullname="Jeffrey Lau" surname="Lau" initials="J.">
    <organization>Ribose</organization>
    <address>
      <postal>
        <street>Suite 1111, 1 Pedder Street</street>
        <city>Central</city>
        <region>Hong Kong</region>
        <country>Hong Kong</country>
      </postal>
      <email>jeffrey.lau@ribose.com</email>
      <uri>https://www.ribose.com</uri>
    </address>
  </author>
  <author fullname="Paolo Brasolin" surname="Brasolin" initials="P.">
    <organization>Ribose</organization>
    <address>
      <postal>
        <street/>
        <country>Italy</country>
      </postal>
      <email>paolo.brasolin@ribose.com</email>
      <uri>https://www.ribose.com</uri>
    </address>
  </author>
  <date day="18" month="April" year="2018"/>
  <area>Internet</area>

<abstract><t>This document describes an AsciiDoc syntax extension called AsciiRFC,
designed for authoring IETF Internet-Drafts and RFCs.</t>
<t>AsciiDoc is a human readable document markup language which affords
more granular control over markup than comparable schemes such as
Markdown.</t>
<t>The AsciiRFC syntax is designed to allow the author to entirely focus
on text, providing the full power of the resulting RFC XML through the
AsciiDoc language, while abstracting away the need to manually edit
XML, including references.</t>
<t>This document itself was written and generated into RFC XML v2
(RFC7749) and RFC XML v3 (RFC7991) directly through asciidoctor-rfc,
an AsciiRFC generator.</t></abstract>
</front><middle>
<section anchor="_introduction" title="Introduction"><t>This document describes a markup language called "AsciiRFC", developed
specifically for the purpose of generating RFC XML document, based on
Asciidoctor syntax.  AsciiRFC can be used to generate compliant RFC
XML v2 and v3 documents through the usage of an open source, MIT-licensed
Ruby gem called "asciidoctor-rfc" written by the authors
<xref target="asciidoctor-rfc"/>.</t>
<section anchor="_designed_for_authoring_rfcs_and_internet_drafts" title="Designed for authoring RFCs and Internet-Drafts"><t>Internet-Drafts and RFCs intended for publication submission to the
IETF can be written in a multitude of formats today, including:</t>
<t>
  <list style="symbols">
    <t>XML: RFC XML v2 <xref target="RFC7749"/> and v3 <xref target="RFC7991"/></t>
    <t>nroff: through <xref target="NroffEdit"/></t>
    <t>Microsoft Word: through usage of <xref target="RFC5385"/></t>
    <t>Lyx: through <xref target="lyx2rfc"/></t>
    <t>Pandoc: <xref target="RFC7328"/>, through <xref target="pandoc2rfc"/> or <xref target="draftr"/></t>
    <t>Kramdown: through <xref target="kramdown-rfc2629"/></t>
    <t>mmark: through <xref target="mmark"/></t>
  </list>
</t>
<t>Interestingly, the last three are Markdown <xref target="RFC7763"/> variants.</t>
<t>As specified in <xref target="RFC7990"/>, the IETF intends for the canonical format
of RFCs to transition from plain-text ASCII to RFC XML v3 <xref target="RFC7991"/>.
While plain-text will continue to be accepted from authors by the
IETF, at least in the short- to medium-term, XML will be preferred for
submission, and any plain-text submissions will need to be converted
to RFC XML v3.</t>
<t>While this need is already met for RFC XML v2 <xref target="RFC7749"/> by the tools
specified above, the transition to RFC XML v3 <xref target="RFC7991"/> places added
onus on authors to generate compliant XML.</t></section>
<section anchor="_relationship_between_asciirfc_asciidoc_and_asciidoctor" title="Relationship between AsciiRFC, AsciiDoc and Asciidoctor"><t><xref target="AsciiDoc"/> is a lightweight markup language and an alternative to
Markdown, with features that make it attractive as a markup language
for RFC with XML output.</t>
<t><xref target="Asciidoctor"/> is an open source,
MIT-licensed Ruby implementation of <xref target="AsciiDoc"/> that provides an
enhancement of the original AsciiDoc markup language.</t>
<t>The variant of AsciiDoc syntax accepted by <xref target="Asciidoctor"/> is
hereafter called "Asciidoctor syntax".</t>
<t>AsciiRFC, as described in this document, is an AsciiDoc variant developed
on Asciidoctor syntax, created for the purpose of generating RFC XML
documents.</t></section>
<section anchor="_comparison_with_rfc_xml_tools_based_on_markdown_variants" title="Comparison with RFC XML tools based on Markdown variants"><t>Section 1.2 of <xref target="RFC7764"/> famously states that "there is no such thing as
'invalid' Markdown, there is no standard demanding adherence to the
Markdown syntax, and there is no governing body that guides or impedes
its development." While there are contexts where that flexibility
is useful, the authoring of RFCs does have a standard and a governing
body, and there is such a thing as invalid RFC XML. A more rigorous
and extensible
counterpart to Markdown, which still preserves its basic approach to
formatting, can generate RFC XML that encompasses a fuller
subset of the specification, and preempts malformed RFC XML output.
The proposed markup language and associated Ruby gem has several
advantages that we believe make it worth considering as an approach
to generating RFC XML.</t>
<t>
  <list style="symbols">
    <t>AsciiDoc was designed from the beginning as a publishing language:
it was initially intended as a plain-text alternative to the DocBook
XML schema. For that reason, Asciidoctor natively supports the full
range of formatting required by RFC XML (including notes, tables,
bibliographies, source-code blocks, and definition lists), without
resorting to embedded HTML or Markdown "flavours".</t>
    <t>AsciiRFC covers the full range of elements in RFC XML v2 and RFC XML v3.</t>
    <t>AsciiDoc in its Ruby-based Asciidoctor implementation is extensible,
with a well-defined API. (Extensions have been harnessed to deal with
bibliographic preprocessing for AsciiRFC.)</t>
    <t>AsciiRFC allows granular control of rendering, including
user-specified attributes of text blocks.</t>
    <t>The Asciidoctor implementation allows document inclusion, for
managing large-scale documentation projects.</t>
    <t>AsciiRFC allows granular control of permutations of block nesting,
such as source code within lists or definition lists within unordered
lists.</t>
    <t>As a more formal counterpart to Markdown, AsciiDoc is well-suited to
generating XML that needs to conform to a specified schema. The asciidoctor-rfc
Ruby gem developed around AsciiDoc validates its RFC XML output against the RelaxNG
schema defined for RFC XML, and reports any issues to the end user.</t>
    <t>The asciidoctor-rfc Ruby gem incorporates validation not
only of the XML structure of the standard, but also of the IETF workgroups
it mentions against the latest listing online,
and the bibliographic entries for RFC and other standards registered
on <eref target="https://xml2rfc.tools.ietf.org"/>. The gem also dynamically
fetches bibliographic entries from the xml2rfc site, and uses them
to populate the RFC XML document.</t>
  </list>
</t>
<t>As with Markdown, there is a wide range of tools that can render
AsciiDoc; so AsciiRFC drafts of RFC documents can be previewed and
accessed without depending on the RFC tools ecosystem. Our realisation
of RFC XML in AsciiRFC has aimed to ensure that, as much as possible,
the markup language can be can be processed by generic Asciidoctor
tools.</t>
<t>The only exception to this as an add-on is the optional bibliography
module, which allows bibliographies to be assembled on the fly based
on citations in a document: see <xref target="asciidoctor_bibliography"/>.</t></section></section>
<section anchor="_conventions_used_in_this_document" title="Conventions Used in This Document"><section anchor="_terms_and_definitions" title="Terms and Definitions"><t>The following terms and definitions apply to this document:</t>
<t>
  <list style="hanging">
    <t hangText="AsciiDoc"><vspace blankLines="0"/>The AsciiDoc markup language generically, as described in <xref target="AsciiDoc"/>.</t>
    <t hangText="Asciidoctor syntax"><vspace blankLines="0"/>The enhanced AsciiDoc syntax implemented by the <xref target="Asciidoctor"/>
Ruby gem.</t>
    <t hangText="AsciiRFC"><vspace blankLines="0"/>The AsciiDoc syntax developed for the purpose of generating RFC XML
document based on Asciidoctor syntax, as described in this document.</t>
  </list>
</t></section>
<section anchor="_wrapping_lines_in_documentation_examples" title="Wrapping Lines in Documentation Examples"><t>This document contains a number of examples as fragments of XML. In
some cases, the examples contain URLs that are over 72 characters long
and so need to be wrapped for presentation in this document even though
they would not need to be wrapped in the actual source XML.</t>
<t>This document adopts a policy similar to that described in
<xref target="I-D.wu-netmod-yang-xml-doc-conventions"/> to denote line wraps. When an
XML example contains a URL, that URL is always included in
double-quotes. If the URL would extend beyond 72 characters, the line
is wrapped and the wrap is indicated with a backslash ("\"). The
backslash appears without any additional space before the backslash and
with no further characters after the backslash.</t>
<t>For example, the following XML&#8230;&#8203;</t>
<figure>
  <artwork type="xml"><![CDATA[
<format type="TXT" target=
  "http://www.example.org/citations/cookpot.txt"/>
]]></artwork>
</figure>
<t>&#8230;&#8203;may be presented as</t>
<figure>
  <artwork type="xml"><![CDATA[
<format type="TXT" target=
  "http://www.example.org/citations/\
  cookpot.txt"/>
]]></artwork>
</figure></section></section>
<section anchor="_document_structure_and_syntax" title="Document Structure and Syntax"><t>AsciiRFC consists of a subset of Asciidoctor syntax
with the addition of bibliographic macros
(<xref target="asciidoctor_bibliography"/>).
Asciidoctor syntax is presented in the Asciidoctor user manual
<xref target="Asciidoctor-Manual"/>.</t>
<t>AsciiRFC syntax consists of:</t>
<t>
  <list style="symbols">
    <t>A document header, containing a title, a list of authors, and
document attributes in lines prefixed with <spanx style="verb">:</spanx>.</t>
    <t>An optional document preamble, separated from the document header by a
blank line, and not containing any section titles.</t>
    <t>A number of sections, set off by a section title (a line prefixed
with two or more <spanx style="verb">=</spanx>.)</t>
  </list>
</t>
<t>A section may contain:</t>
<t>
  <list style="symbols">
    <t>Other sections, whose level of nesting is indicated by the number of
<spanx style="verb">=</spanx> in their header.</t>
    <t>Blocks of text. Blocks can have metadata (including a title, an
anchor for cross-references, and attributes.)</t>
  </list>
</t>
<t>Blocks can be:</t>
<t>
  <list style="symbols">
    <t>Paragraphs, which are terminated by blank lines.</t>
    <t>Lists. List items are by default paragraphs, but can span over
multiple paragraphs.</t>
    <t>Delimited blocks (with a line delimiter on either side of them);
these include tables, notes, sidebars, source code, block quotes,
examples, and unprocessed content (e.g. raw XML). Delimited blocks
contain by default one or more paragraphs.</t>
    <t>List items can contain other blocks, including both nested lists and
delimited blocks.</t>
    <t>Some delimited blocks can contain other delimited blocks; for
example, examples can contain source code as well as discussion in
paragraphs.</t>
    <t>Blocks of text consist of inline text, which itself can contain
markup.</t>
  </list>
</t>
<t>Inline markup includes:</t>
<t>
  <list style="symbols">
    <t>Text formatting: Bold, italic, superscript, subscript, monospace.</t>
    <t>Markup macros: the <spanx style="verb">bcp14</spanx> and <spanx style="verb">comment</spanx> macros. (Asciidoctor syntax supports custom markup macros.)</t>
    <t>URLs, including display text to render.</t>
    <t>Inline anchors.</t>
    <t>Cross-references to anchors (IDs of blocks or spans of text),
including display text to render.</t>
    <t>Images: SVG only, as specified in <xref target="RFC7996"/>.</t>
    <t>Index terms.</t>
  </list>
</t>
<section anchor="_unsupported_features_compared_with_asciidoctor_syntax" title="Unsupported features compared with Asciidoctor syntax"><t>Several features from Asciidoctor are not supported within AsciiRFC
due to the lack of support within RFC XML, including:</t>
<t>
  <list style="symbols">
    <t>Audio and video files are not supported in AsciiRFC as today&#8217;s
RFC XML structure does not support audio or video.</t>
    <t>Equations are not supported as there is no current RFC XML
equivalent. Asciidoctor provides native support for
<xref target="AsciiMathML"/> and <xref target="TeX-LaTeX"/>, via the <xref target="MathJax"/> tool.</t>
    <t>Footnotes are not supported in AsciiRFC as there is no equivalent
semantic representation in RFC XML.</t>
  </list>
</t>
<t>These carved out features can be easily supported by AsciiRFC
once RFC XML allows these elements.</t></section>
<section anchor="_mapping_to_rfc_xml_syntax" title="Mapping To RFC XML syntax"><t>The Asciidoctor syntax document structure aligns with both the RFC XML v2
and the RFC XML v3 structure.  In the following, RFC XML v3 equivalences are given
to the basic Asciidoctor structure.</t>
<t>
  <list style="hanging">
    <t hangText="Header"><vspace blankLines="0"/><spanx style="verb">&lt;rfc&gt;</spanx> attributes, most <spanx style="verb">front</spanx> elements.</t>
    <t hangText="Preamble"><vspace blankLines="0"/><spanx style="verb">front/abstract</spanx> and <spanx style="verb">front/note</spanx>.</t>
    <t hangText="Sections"><vspace blankLines="0"/><spanx style="verb">middle/section</spanx> elements.</t>
    <t hangText="Sections with bibliography style attribute"><vspace blankLines="0"/><spanx style="verb">back/references</spanx> elements.</t>
    <t hangText="Sections with appendix style attribute"><vspace blankLines="0"/><spanx style="verb">back/section</spanx> elements.</t>
    <t hangText="Paragraphs"><vspace blankLines="0"/><spanx style="verb">t</spanx> elements.</t>
    <t hangText="Lists"><vspace blankLines="0"/><spanx style="verb">ul</spanx>, <spanx style="verb">ol</spanx>, <spanx style="verb">dl</spanx> elements.</t>
    <t hangText="Delimited blocks"><vspace blankLines="0"/><spanx style="verb">artwork</spanx>, <spanx style="verb">aside</spanx>, <spanx style="verb">blockquote</spanx>, <spanx style="verb">figure</spanx>, <spanx style="verb">note</spanx>, <spanx style="verb">sourcecode</spanx>, <spanx style="verb">table</spanx>.</t>
    <t hangText="Inline markup"><vspace blankLines="0"/><spanx style="verb">bcp14</spanx>, <spanx style="verb">br</spanx>, <spanx style="verb">cref</spanx>, <spanx style="verb">em</spanx>, <spanx style="verb">eref</spanx>, <spanx style="verb">iref</spanx>, <spanx style="verb">relref</spanx>, <spanx style="verb">strong</spanx>, <spanx style="verb">sub</spanx>,
<spanx style="verb">sup</spanx>, <spanx style="verb">tt</spanx>, <spanx style="verb">xref</spanx>.</t>
  </list>
</t>
<t>Full details of the mapping of AsciiRFC elements to RFC XML v2 and v3
elements, and of how to convert AsciiRFC documents to RFC XML, are
given in the documentation of <xref target="asciidoctor-rfc"/>.</t></section>
<section anchor="_example_illustrations" title="Example Illustrations"><t>This document utilizes example documents provided in <xref target="appendix-a"/> for
demonstration of AsciiRFC syntax and usage. The source files and published
versions (at the IETF Datatracker) of these example documents are
available in <xref target="appendix-a"/>.</t>
<t>
  <list style="symbols">
    <t>"A Minimal Internet-Draft In AsciiRFC" <xref target="example-1-asciirfc"/></t>
    <t>"The Holy Hand Grenade of Antioch" <xref target="example-2-asciirfc"/></t>
    <t>"An API For Calendar-Based Fortune Heuristics Services" <xref target="example-3-asciirfc"/></t>
  </list>
</t></section>
<section anchor="_simple_illustration" title="Simple Illustration"><t>This section gives an overview of how to create an RFC XML document in
AsciiRFC, with some pitfalls to be aware of.</t>
<t>Illustrations are in RFC XML v3 and RFC XML v2.</t>
<t>A sample AsciiRFC document is provided in <xref target="source-sample-asciirfc"/>,
together with its corresponding rendering in:</t>
<t>
  <list style="symbols">
    <t>RFC XML v3 (<xref target="source-sample-asciirfc-output-v3"/>)</t>
    <t>RFC XML v2 (<xref target="source-sample-asciirfc-output-v2"/>)</t>
  </list>
</t>
<figure anchor="source-sample-asciirfc" title="Sample Internet-Draft in AsciiRFC">
  <artwork type="asciidoc"><![CDATA[
<CODE BEGINS>
= A Minimal Internet-Draft In AsciiRFC
:doctype: internet-draft
:name: draft-asciirfc-minimal-02
:abbrev: AsciiRFC Example
:status: informational
:ipr: trust200902
:submissionType: individual
:area: Internet
:intended-series: full-standard
:revdate: 2018-04-12T00:00:00Z
:fullname: Josiah Stinkney Carberry
:lastname: Carberry
:forename_initials: J. S.
:organization: Brown University
:phone: +1 401 863 1000
:street: Box K, 69 Brown Street
:city: Providence
:code: 02912
:country: United States of America
:uri: https://www.brown.edu
:email: josiah.carberry@ribose.com
:fullname_2: Truman Grayson
:lastname_2: Grayson
:forename_initials_2: T.
:organization_2: Brown University
:phone_2: +1 401 863 1000
:street_2: Box G, 69 Brown Street
:city_2: Providence
:code_2: 02912
:country_2: United States of America
:uri_2: https://www.brown.edu
:email_2: truman.grayson@ribose.com

[abstract]

This document provides a template on how to author (or migrate!)
a new Internet-Draft / RFC in the AsciiRFC format.

This template requires usage of the `asciidoctor-rfc` Ruby gem.

[#introduction]
== Introduction

AsciiRFC <<I-D.ribose-asciirfc>> is an extremely simple way to
author Internet-Drafts and RFCs without needing to manually
craft RFC XML conforming to <<RFC7991>>.

This is a template specifically made for authors to easily
start with creating an Internet-Draft conforming to <<RFC7991>>
and submittable to the IETF datatracker.

[#conventions]
== Terms and Definitions

The key words "*MUST*", "*MUST NOT*", "*REQUIRED*", "*SHALL*",
"*SHALL NOT*", "*SHOULD*", "*SHOULD NOT*", "*RECOMMENDED*",
"*NOT RECOMMENDED*", "*MAY*", and "*OPTIONAL*" in this
document are to be interpreted as described in BCP 14
<<RFC2119>> <<RFC8174>> when, and only when, they appear in
all capitals, as shown here.

This document also refers to the following terms and
definitions:

AsciiRFC::
an AsciiDoc-derived syntax used for authoring RFCs and
Internet-Drafts, as defined in <<I-D.ribose-asciirfc>>.

[#symbols]
== Symbols And Abbreviations

ADRFC::
abbreviated form of AsciiRFC


[#security]
== Security Considerations

Any security considerations should be placed here.

As described in <<main>> (here's how you refer a local anchor),
local tools have to be installed before the document template
can be built.

Running of these local tools *MAY* produce unintended side
effects that impact security.

[#iana]
== IANA Considerations

This document does not require any action by IANA.

But if it does, such as proposing changes to IANA registries,
please include them here.

[bibliography]
== Normative References

//bibliography::norm[]
++++

<reference anchor= 'RFC2119'
target= 'https://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement
Levels</title>
<author initials= 'S.' surname= 'Bradner' fullname='S. Bradner'>
<organization />
</author>
<date year= '1997' month= 'March' />
<abstract>
<t>In many standards track documents several words are
used to signify the requirements in the specification.
These words are often capitalized. This document defines
these words as they should be interpreted in IETF
documents.  This document specifies an Internet Best
Current Practices for the Internet Community, and
requests discussion and suggestions for improvements.
</t>
</abstract>
</front>
<seriesInfo name= 'BCP' value= '14'/>
<seriesInfo name= 'RFC' value= '2119'/>
<seriesInfo name= 'DOI' value= '10.17487/RFC2119'/>
</reference>

<reference anchor= 'RFC7991'
target= 'https://www.rfc-editor.org/info/rfc7991'>
<front>
<title>The &quot;xml2rfc&quot; Version 3 Vocabulary</title>
<author initials= 'P.' surname= 'Hoffman' fullname='P. Hoffman'>
<organization />
</author>
<date year= '2016' month= 'December' />
<abstract>
<t>This document defines the &quot;xml2rfc&quot;
version 3 vocabulary: an XML-based language used for
writing RFCs and Internet-Drafts.  It is heavily derived
from the version 2 vocabulary that is also under
discussion.  This document obsoletes the v2 grammar
described in RFC 7749.</t>
</abstract>
</front>
<seriesInfo name= 'RFC' value= '7991'/>
<seriesInfo name= 'DOI' value= '10.17487/RFC7991'/>
</reference>

<reference anchor= 'RFC8174'
target= 'https://www.rfc-editor.org/info/rfc8174'>
<front>
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119
Key Words</title>
<author initials= 'B.' surname= 'Leiba' fullname='B. Leiba'>
<organization />
</author>
<date year= '2017' month= 'May' />
<abstract>
<t>RFC 2119 specifies common key words that may be
used in protocol specifications.  This document aims to
reduce the ambiguity by clarifying that only UPPERCASE
usage of the key words have the defined special
meanings.</t>
</abstract>
</front>
<seriesInfo name= 'BCP' value= '14'/>
<seriesInfo name= 'RFC' value= '8174'/>
<seriesInfo name= 'DOI' value= '10.17487/RFC8174'/>
</reference>
++++

[bibliography]
== Informative References

//bibliography::info[]
++++

<reference anchor= 'IETF.TLP'
target= 'https://trustee.ietf.org/trust-legal-provisions.html'>
<front>
<title>IETF Trust Legal Provisions (TLP)</title>
<author>
<organization>IETF</organization>
</author>
<date month= 'April' day= '12' year='2018' />
</front>
</reference>

<reference anchor= 'RNP' target= 'https://github.com/riboseinc/rnp/'>
<front>
<title>RNP: A C library approach to OpenPGP</title>
<author>
<organization>Ribose Inc.</organization>
<address>
<postal>
<street>Suite 1111, 1 Pedder Street</street>
<city>Central</city>
<region>Hong Kong</city>
<country>Hong Kong</country>
</postal>
<email>open.source@ribose.com</email>
<uri>https://www.ribose.com</uri>
</address>
</author>
<date day= '31' month= 'March' year='2018'/>
</front>
</reference>

<reference anchor= 'I-D.ribose-asciirfc'>
<front>
<title>
AsciiRFC: Authoring Internet-Drafts And RFCs Using AsciiDoc
</title>
<author initials= "R" surname= "Tse" fullname="Ronald Tse">
<organization/>
</author>
<author initials= "J" surname= "Lau" fullname="Jeffrey Lau">
<organization/>
</author>
<author initials= "N" surname= "Nicholas" fullname="Nick Nicholas">
<organization/>
</author>
<author initials= "P" surname= "Brasolin" fullname="Paolo Brasolin">
<organization/>
</author>
<date month= "March" day= "23" year="2018"/>
<abstract>
<t>This document describes an AsciiDoc syntax
extension called AsciiRFC, designed for authoring IETF
Internet-Drafts and RFCs.  AsciiDoc is a human readable document
markup language which affords more granular control over markup
than comparable schemes such as Markdown.  The AsciiRFC syntax
is designed to allow the author to entirely focus on text,
providing the full power of the resulting RFC XML through the
AsciiDoc language, while abstracting away the need to manually
edit XML, including references.  This document itself was
written and generated into RFC XML v2 (RFC7749) and RFC XML v3
(RFC7991) directly through asciidoctor-rfc, an AsciiRFC
generator.</t>
</abstract>
</front>
<seriesInfo name= "Internet-Draft" value= "draft-ribose-asciirfc-04"/>
<format type= "TXT" target=
"http://www.ietf.org/internet-drafts/draft-ribose-asciirfc-04.txt"/>
</reference>

<reference anchor= "RFC5378"
target="https://www.rfc-editor.org/info/rfc5378">
<front>
<title>Rights Contributors Provide to the IETF Trust</title>
<author initials= "S."
surname="Bradner" fullname="S. Bradner" role="editor">
<organization/>
</author>
<author initials= "J."
surname="Contreras" fullname="J. Contreras" role="editor">
<organization/>
</author>
<date year= "2008" month= "November"/>
<abstract><t>The IETF policies about rights in Contributions
to the IETF are designed to ensure that such Contributions
can be made available to the IETF and Internet communities
while permitting the authors to retain as many rights as
possible. This memo details the IETF policies on rights in
Contributions to the IETF. It also describes the
objectives that the policies are designed to meet. This
memo obsoletes RFCs 3978 and 4748 and, with BCP 79 and
RFC 5377, replaces Section 10 of RFC 2026. This document
specifies an Internet Best Current Practices for the
Internet Community, and requests discussion and
suggestions for improvements.</t></abstract>
</front>
<seriesInfo name= "BCP" value= "78"/>
<seriesInfo name= "RFC" value= "5378"/>
<seriesInfo name= "DOI" value= "10.17487/RFC5378"/>
</reference>

<reference anchor= 'RFC7253'
target= 'https://www.rfc-editor.org/info/rfc7253'>
<front>
<title>The OCB Authenticated-Encryption Algorithm</title>
<author initials= 'T.' surname= 'Krovetz' fullname='T. Krovetz'>
<organization />
</author>
<author initials= 'P.' surname= 'Rogaway' fullname='P. Rogaway'>
<organization />
</author>
<date year= '2014' month= 'May' />
<abstract><t>This document specifies OCB, a shared-key
blockcipher-based encryption scheme that provides
confidentiality and authenticity for plaintexts and
authenticity for associated data.  This document is a product
of the Crypto Forum Research Group (CFRG).</t></abstract>
</front>
<seriesInfo name= 'RFC' value= '7253'/>
<seriesInfo name= 'DOI' value= '10.17487/RFC7253'/>
</reference>
++++


[appendix]
[#appendix-a]
== Examples

=== Example 1

Here's an example of a properly wrapped code snippet in
accordance with rules specified in <<code-snippets>>.

[source,json]
----
<CODE BEGINS>
{
"code": {
"encoding": "ascii",
"type":     "rfc",
"authors":  [ "Josiah Carberry", "Truman Grayson" ]
}
}
<CODE ENDS>
----

[#acknowledgements]
== Acknowledgements

The authors would like to thank their families.
<CODE ENDS>
]]></artwork>
</figure>
<t>The first block of text, from
<spanx style="verb">= Template For Writing An Internet-Draft In AsciiRFC</spanx> through to
<spanx style="verb">:email_2: thomas.kandell@brown.edu</spanx>, is
the document header. It contains a title in the first line, an author
attribution (<spanx style="verb">Josiah Carberry; Thomas Kandell</spanx>), and then a set of
document attributes, conveying
information about the document as well as information about its
authors. This information ends up in RFC XML either as attributes of the root
<spanx style="verb">rfc</spanx> tag, elements of the <spanx style="verb">front</spanx> tag, or processing instructions.</t>
<t>The following blocks of text, up until the first section header
(<spanx style="verb">== Introduction</spanx>), are the document preamble. They are
treated by the document converter as containing the document abstract
(<spanx style="verb">abstract</spanx>), followed by any notes if present.</t>
<t>Section headers delimit the sections of the main body of the document,
starting with <spanx style="verb">== Introduction</spanx>. The document converter treats the first section
of the document as the start of the <spanx style="verb">middle</spanx> section in RFC XML.
The first section header is followed by a paragraph, and other
sections and paragraphs. The number of <spanx style="verb">=</spanx> signs can be one higher than that of
the preceding section header, which indicates that they are subsections
of that section; so <spanx style="verb">=== Operators</spanx>
is a subsection of the preceding <spanx style="verb">== Symbols And Abbreviations</spanx>.</t>
<t>The paragraphs contain some inline formatting
(e.g. boldface: <spanx style="verb">*MUST*</spanx>, monospace: <spanx style="verb">`type`</spanx>), and sections can
also contain blocks other than normal paragraphs; the section
<spanx style="verb">== Operators</spanx>, for example, contains
a definition list (whose terms are delimited by <spanx style="verb">::</spanx>), and the
subsection <spanx style="verb">=== Example 1</spanx> contains a code snippet
(delimited by <spanx style="verb">----</spanx>, and tagged with the style attribute <spanx style="verb">[source,json]</spanx>,
indicating that this is a JSON sourcecode listing). The document
can also include comments (<spanx style="verb">//</spanx> for inline, <spanx style="verb">////</spanx> for blocks),
which are not rendered when the document is processed.</t>
<t>The introductory section in this example
contains a citation of a reference, which in this
version of AsciiRFC is treated identically to a cross-reference
(<spanx style="verb">&lt;&lt;RFC7253&gt;&gt;</spanx>) -- the crossreference being to the references
section of the document. Sections and blocks of texts within the
document can also be the target of crossreferences; for example,
the section header <spanx style="verb">=== Operators</spanx>
is preceded by the anchor <spanx style="verb">[#operators]</spanx>, and that anchor
is already referenced in the section <spanx style="verb">== Security Considerations</spanx>.</t>
<t>The third last and second last section are tagged with the style attribute
<spanx style="verb">[bibliography]</spanx>, which identifies them as references containers; the
document converter accordingly inserts them into the <spanx style="verb">back</spanx> element under
RFC XML. The contents of the references sections are in this
instance raw XML, delimited as a passthrough block (with
<spanx style="verb">++++</spanx>), which the converter does not alter.</t>
<t>The final section is tagged with the style attribute <spanx style="verb">[appendix]</spanx>,
and is treated as such.</t>
<t>The RFC XML v3 document generated from this AsciiRFC document is:</t>
<figure anchor="source-sample-asciirfc-output-v3" title="Sample Internet-Draft In AsciiRFC, Output In RFC XML v3 Format">
  <artwork type="xml"><![CDATA[
<CODE BEGINS>
<?xml version= "1.0" encoding= "US-ASCII"?>
<?xml-stylesheet type= "text/xsl" href= "rfc2629.xslt"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc strict= "yes"?>
<?rfc compact= "yes"?>
<?rfc subcompact= "no"?>
<?rfc toc= "yes"?>
<?rfc tocdepth= "4"?>
<?rfc symrefs= "yes"?>
<?rfc sortrefs= "yes"?>
<rfc xmlns:xi= "http://www.w3.org/2001/XInclude" ipr= "trust200902"
submissionType="IETF" prepTime="2018-04-18T03:35:29Z" version="3">
<front>
<title abbrev= "AsciiRFC Example">A Minimal Internet-Draft In
AsciiRFC</title>
<seriesInfo name= "Internet-Draft" status= "informational"
stream="IETF" value="draft-asciirfc-minimal-02"/>
<seriesInfo name= "" status="full-standard"
value="draft-asciirfc-minimal-02"/>
<author fullname= "Josiah Stinkney Carberry" surname= "Carberry"
initials="J. S.">
<organization>Brown University</organization>
<address>
<postal>
<street>Box K, 69 Brown Street</street>
<city>Providence</city>
<code>02912</code>
<country>United States of America</country>
</postal>
<phone>+1 401 863 1000</phone>
<email>josiah.carberry@ribose.com</email>
<uri>https://www.brown.edu</uri>
</address>
</author>
<author fullname= "Truman Grayson" surname= "Grayson" initials="T.">
<organization>Brown University</organization>
<address>
<postal>
<street>Box G, 69 Brown Street</street>
<city>Providence</city>
<code>02912</code>
<country>United States of America</country>
</postal>
<phone>+1 401 863 1000</phone>
<email>truman.grayson@ribose.com</email>
<uri>https://www.brown.edu</uri>
</address>
</author>
<date day= "12" month= "April" year="2018"/>
<area>Internet</area>

<abstract><t>This document provides a template on how to author (or
migrate!)
a new Internet-Draft / RFC in the AsciiRFC format.</t>
<t>This template requires usage of the <tt>asciidoctor-rfc</tt> Ruby
gem.</t></abstract>
</front><middle>
<section anchor= "introduction" numbered=
"false"><name>Introduction</name><t>AsciiRFC <xref target=
"I-D.ribose-asciirfc"/> is an extremely simple way to
author Internet-Drafts and RFCs without needing to manually
craft RFC XML conforming to <xref target= "RFC7991"/>.</t>
<t>This is a template specifically made for authors to easily
start with creating an Internet-Draft conforming to <xref target=
"RFC7991"/>
and submittable to the IETF datatracker.</t></section>
<section anchor= "conventions" numbered= "false"><name>Terms and
Definitions</name><t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST
NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>",
"<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD
NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>",
"<strong>NOT RECOMMENDED</strong>", "<bcp14>MAY</bcp14>", and
"<bcp14>OPTIONAL</bcp14>" in this
document are to be interpreted as described in BCP 14
<xref target= "RFC2119"/> <xref target="RFC8174"/> when, and only when,
they appear in
all capitals, as shown here.</t>
<t>This document also refers to the following terms and
definitions:</t>
<dl>
<dt>AsciiRFC</dt>
<dd>an AsciiDoc-derived syntax used for authoring RFCs and
Internet-Drafts, as defined in <xref target=
"I-D.ribose-asciirfc"/>.</dd>
</dl></section>
<section anchor= "symbols" numbered= "false">
<name>Symbols And Abbreviations</name>
<dl>
<dt>ADRFC</dt>
<dd>abbreviated form of AsciiRFC</dd>
</dl>
</section>
<section anchor= "main" numbered= "false"><name>Main
content</name><t>This is where you place the main content, and the
following
serves as a placeholder for your text.</t>
<t>Subsections are used here for demonstration purposes.</t>
<section anchor= "_getting_started" numbered= "false"><name>Getting
started</name><t>The AsciiRFC and RFC toolchains <bcp14>MUST</bcp14> be
available locally to
build this document template.</t>
<section anchor= "_asciirfc_toolchain" numbered= "false"><name>AsciiRFC
toolchain</name><t>You will need to have:</t>
<ul>
<li>Ruby: for running the AsciiRFC toolchain</li>
<li><tt>asciidoctor-rfc</tt> gem: for converting AsciiRFC into XML RFC
(v2 or v3)</li>
</ul></section>
<section anchor= "_xml_rfc_toolchain" numbered= "false"><name>XML RFC
toolchain</name><t>You will need to have:</t>
<ul>
<li>Python: for running <tt>xml2rfc</tt></li>
<li><tt>xml2rfc</tt>: for converting RFC XML (v2 or v3) into TXT</li>
<li><tt>idnits</tt>: for submission preflight</li>
</ul></section></section>
<section anchor= "_referencing_external_content" numbered= "false">
<name>Referencing external content</name>
<ul>
<li>This is a published RFC <xref target= "RFC7253"/></li>
<li>This is an Internet-Draft <xref target=
"I-D.ribose-asciirfc"/></li>
<li>This is an external reference <xref target= "RNP"/></li>
</ul>
</section>
<section anchor= "code-snippets" numbered= "false">
<name>Code snippets</name>
<t>Code snippets should be wrapped with <tt>&lt;CODE BEGINS&gt;</tt>
and
<tt>&lt;CODE ENDS&gt;</tt> blocks, as required by the IETF Trust Legal
Provisions (TLP) <xref target= "IETF.TLP"/> specified in <xref
target="RFC5378"/>.</t>
</section></section>
<section anchor= "security" numbered= "false"><name>Security
Considerations</name><t>Any security considerations should be placed
here.</t>
<t>As described in <xref target= "main"/> (here&#8217;s how you refer a
local anchor),
local tools have to be installed before the document template
can be built.</t>
<t>Running of these local tools <bcp14>MAY</bcp14> produce unintended
side
effects that impact security.</t></section>
<section anchor= "iana" numbered= "false"><name>IANA
Considerations</name><t>This document does not require any action by
IANA.</t>
<t>But if it does, such as proposing changes to IANA registries,
please include them here.</t></section>
</middle><back>
<references anchor= "_normative_references">
<name>Normative References</name>
<xi:include href=
"https://xml2rfc.tools.ietf.org/public/rfc/bibxml/\
reference.RFC.2119.xml"
parse= "text"/>
<xi:include href=
"https://xml2rfc.tools.ietf.org/public/rfc/bibxml/\
reference.RFC.7991.xml"
parse= "text"/>
<xi:include href=
"https://xml2rfc.tools.ietf.org/public/rfc/bibxml/\
reference.RFC.8174.xml"
parse= "text"/>
</references>
<references anchor= "_informative_references">
<name>Informative References</name>
<reference anchor= "IETF.TLP" target=
"https://trustee.ietf.org/trust-legal-provisions.html">
<front>
<title>IETF Trust Legal Provisions (TLP)</title>
<author>
<organization>IETF</organization>
</author>
<date month= "April" day= "12" year="2018"/>
</front>
</reference>
<reference anchor= "RNP" target= "https://github.com/riboseinc/rnp/">
<front>
<title>RNP: A C library approach to OpenPGP</title>
<author>
<organization>Ribose Inc.</organization>
<address>
<postal>
<street>Suite 1111, 1 Pedder Street</street>
<city>Central</city>
<region>Hong Kong</region>
<country>Hong Kong</country>
</postal>
<email>open.source@ribose.com</email>
<uri>https://www.ribose.com</uri>
</address>
</author>
<date day= "31" month= "March" year="2018"/>
</front>
</reference>
<xi:include href=
"https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/\
/reference.I-D.draft-ribose-asciirfc-04.xml"
parse= "text"/>
<xi:include href=
"https://xml2rfc.tools.ietf.org/public/rfc/bibxml/\
reference.RFC.5378.xml"
parse= "text"/>
<xi:include href=
"https://xml2rfc.tools.ietf.org/public/rfc/bibxml/\
reference.RFC.7253.xml"
parse= "text"/>
</references>
<section anchor= "appendix-a" numbered= "false">
<name>Examples</name>
<section anchor= "_example_1" numbered= "false"><name>Example
1</name><t>Here&#8217;s an example of a properly wrapped code snippet in
accordance with rules specified in <xref target= "code-snippets"/>.</t>
<figure>
<sourcecode type= "json"><![CDATA[
<CODE BEGINS>
{
"code": {
"encoding": "ascii",
"type":     "rfc",
"authors":  [ "Josiah Carberry", "Truman Grayson" ]
}
}
<CODE ENDS>
]]]]><![CDATA[></sourcecode>
</figure></section>
</section>
<section anchor= "acknowledgements" numbered= "false">
<name>Acknowledgements</name>
<t>The authors would like to thank their families.</t>
</section>
</back>
</rfc>
<CODE ENDS>
]]></artwork>
</figure>
<t>Some default processing instructions have already been prefixed to the
XML.</t>
<t>Our AsciiRFC converter can also generate RFC XML v2 from the same
source AsciiRFC, as shown in <xref target="source-sample-asciirfc-output-v2"/>.
Output in RFC XML v2 is not extensively described in this document.</t>
<figure anchor="source-sample-asciirfc-output-v2" title="Sample Internet-Draft In AsciiRFC, Output In RFC XML v2 Format">
  <artwork type="xml"><![CDATA[
<CODE BEGINS>
<?xml version= "1.0" encoding= "US-ASCII"?>
<?xml-stylesheet type= "text/xsl" href= "rfc2629.xslt"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC2119 SYSTEM
"https://xml2rfc.tools.ietf.org/public/rfc/bibxml/\
reference.RFC.2119.xml">
<!ENTITY RFC7991 SYSTEM
"https://xml2rfc.tools.ietf.org/public/rfc/bibxml/\
reference.RFC.7991.xml">
<!ENTITY RFC8174 SYSTEM
"https://xml2rfc.tools.ietf.org/public/rfc/bibxml/\
reference.RFC.8174.xml">
<!ENTITY I-D.ribose-asciirfc SYSTEM
"https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/\
/reference.I-D.draft-ribose-asciirfc-04.xml">
<!ENTITY RFC5378 SYSTEM
"https://xml2rfc.tools.ietf.org/public/rfc/bibxml/\
reference.RFC.5378.xml">
<!ENTITY RFC7253 SYSTEM
"https://xml2rfc.tools.ietf.org/public/rfc/bibxml/\
reference.RFC.7253.xml">
]>
<?rfc strict= "yes"?>
<?rfc compact= "yes"?>
<?rfc subcompact= "no"?>
<?rfc toc= "yes"?>
<?rfc tocdepth= "4"?>
<?rfc symrefs= "yes"?>
<?rfc sortrefs= "yes"?>
<rfc ipr= "trust200902" category= "info" submissionType="IETF"
docName="draft-asciirfc-minimal-02">
<front>
<title abbrev= "AsciiRFC Example">A Minimal Internet-Draft In
AsciiRFC</title>
<author fullname= "Josiah Stinkney Carberry" surname= "Carberry"
initials="J. S.">
<organization>Brown University</organization>
<address>
<postal>
<street>Box K, 69 Brown Street</street>
<city>Providence</city>
<code>02912</code>
<country>United States of America</country>
</postal>
<phone>+1 401 863 1000</phone>
<email>josiah.carberry@ribose.com</email>
<uri>https://www.brown.edu</uri>
</address>
</author>
<author fullname= "Truman Grayson" surname= "Grayson" initials="T.">
<organization>Brown University</organization>
<address>
<postal>
<street>Box G, 69 Brown Street</street>
<city>Providence</city>
<code>02912</code>
<country>United States of America</country>
</postal>
<phone>+1 401 863 1000</phone>
<email>truman.grayson@ribose.com</email>
<uri>https://www.brown.edu</uri>
</address>
</author>
<date day= "12" month= "April" year="2018"/>
<area>Internet</area>

<abstract><t>This document provides a template on how to author (or
migrate!)
a new Internet-Draft / RFC in the AsciiRFC format.</t>
<t>This template requires usage of the <spanx style=
"verb">asciidoctor-rfc</spanx> Ruby gem.</t></abstract>
</front><middle>
<section anchor= "introduction" title= "Introduction"><t>AsciiRFC <xref
target= "I-D.ribose-asciirfc"/> is an extremely simple way to
author Internet-Drafts and RFCs without needing to manually
craft RFC XML conforming to <xref target= "RFC7991"/>.</t>
<t>This is a template specifically made for authors to easily
start with creating an Internet-Draft conforming to <xref target=
"RFC7991"/>
and submittable to the IETF datatracker.</t></section>
<section anchor= "conventions" title= "Terms and Definitions"><t>The key
words "<spanx style= "strong">MUST</spanx>", "<spanx style="strong">MUST
NOT</spanx>", "<spanx style="strong">REQUIRED</spanx>", "<spanx
style="strong">SHALL</spanx>",
"<spanx style= "strong">SHALL NOT</spanx>", "<spanx
style="strong">SHOULD</spanx>", "<spanx style="strong">SHOULD
NOT</spanx>", "<spanx style="strong">RECOMMENDED</spanx>",
"<spanx style= "strong">NOT RECOMMENDED</spanx>", "<spanx
style="strong">MAY</spanx>", and "<spanx
style="strong">OPTIONAL</spanx>" in this
document are to be interpreted as described in BCP 14
<xref target= "RFC2119"/> <xref target="RFC8174"/> when, and only when,
they appear in
all capitals, as shown here.</t>
<t>This document also refers to the following terms and
definitions:</t>
<t>
<list style= "hanging">
<t hangText= "AsciiRFC"><vspace blankLines="0"/>an AsciiDoc-derived
syntax used for authoring RFCs and
Internet-Drafts, as defined in <xref target=
"I-D.ribose-asciirfc"/>.</t>
</list>
</t></section>
<section anchor= "symbols" title= "Symbols And Abbreviations">
<t>
<list style= "hanging">
<t hangText= "ADRFC"><vspace blankLines="0"/>abbreviated form of
AsciiRFC</t>
</list>
</t>
</section>
<section anchor= "main" title= "Main content"><t>This is where you place
the main content, and the following
serves as a placeholder for your text.</t>
<t>Subsections are used here for demonstration purposes.</t>
<section anchor= "_getting_started" title= "Getting started"><t>The
AsciiRFC and RFC toolchains <spanx style= "strong">MUST</spanx> be
available locally to
build this document template.</t>
<section anchor= "_asciirfc_toolchain" title= "AsciiRFC
toolchain"><t>You will need to have:</t>
<t>
<list style= "symbols">
<t>Ruby: for running the AsciiRFC toolchain</t>
<t><spanx style= "verb">asciidoctor-rfc</spanx> gem: for converting
AsciiRFC into XML RFC
(v2 or v3)</t>
</list>
</t></section>
<section anchor= "_xml_rfc_toolchain" title= "XML RFC toolchain"><t>You
will need to have:</t>
<t>
<list style= "symbols">
<t>Python: for running <spanx style= "verb">xml2rfc</spanx></t>
<t><spanx style= "verb">xml2rfc</spanx>: for converting RFC XML (v2
or v3) into TXT</t>
<t><spanx style= "verb">idnits</spanx>: for submission preflight</t>
</list>
</t></section></section>
<section anchor= "_referencing_external_content" title= "Referencing
external content">
<t>
<list style= "symbols">
<t>This is a published RFC <xref target= "RFC7253"/></t>
<t>This is an Internet-Draft <xref target=
"I-D.ribose-asciirfc"/></t>
<t>This is an external reference <xref target= "RNP"/></t>
</list>
</t>
</section>
<section anchor= "code-snippets" title= "Code snippets">
<t>Code snippets should be wrapped with <spanx style= "verb">&lt;CODE
BEGINS&gt;</spanx> and
<spanx style= "verb">&lt;CODE ENDS&gt;</spanx> blocks, as required by
the IETF Trust Legal
Provisions (TLP) <xref target= "IETF.TLP"/> specified in <xref
target="RFC5378"/>.</t>
</section></section>
<section anchor= "security" title= "Security Considerations"><t>Any
security considerations should be placed here.</t>
<t>As described in <xref target= "main"/> (here&#8217;s how you refer a
local anchor),
local tools have to be installed before the document template
can be built.</t>
<t>Running of these local tools <spanx style= "strong">MAY</spanx>
produce unintended side
effects that impact security.</t></section>
<section anchor= "iana" title= "IANA Considerations"><t>This document
does not require any action by IANA.</t>
<t>But if it does, such as proposing changes to IANA registries,
please include them here.</t></section>
</middle><back>
<references title= "Normative References">
&RFC2119;
&RFC7991;
&RFC8174;
</references>
<references title= "Informative References">
<reference anchor= "IETF.TLP" target=
"https://trustee.ietf.org/trust-legal-provisions.html">
<front>
<title>IETF Trust Legal Provisions (TLP)</title>
<author>
<organization>IETF</organization>
</author>
<date month= "April" day= "12" year="2018"/>
</front>
</reference>
<reference anchor= "RNP" target= "https://github.com/riboseinc/rnp/">
<front>
<title>RNP: A C library approach to OpenPGP</title>
<author>
<organization>Ribose Inc.</organization>
<address>
<postal>
<street>Suite 1111, 1 Pedder Street</street>
<city>Central</city>
<region>Hong Kong</region>
<country>Hong Kong</country>
</postal>
<email>open.source@ribose.com</email>
<uri>https://www.ribose.com</uri>
</address>
</author>
<date day= "31" month= "March" year="2018"/>
</front>
</reference>
&I-D.ribose-asciirfc;
&RFC5378;
&RFC7253;
</references>
<section anchor= "appendix-a" title= "Examples">
<section anchor= "_example_1" title= "Example 1"><t>Here&#8217;s an
example of a properly wrapped code snippet in
accordance with rules specified in <xref target= "code-snippets"/>.</t>
<figure>
<artwork type= "json"><![CDATA[
<CODE BEGINS>
{
"code": {
"encoding": "ascii",
"type":     "rfc",
"authors":  [ "Josiah Carberry", "Truman Grayson" ]
}
}
<CODE ENDS>
]]]]><![CDATA[></artwork>
</figure></section>
</section>
<section anchor= "acknowledgements" title= "Acknowledgements">
<t>The authors would like to thank their families.</t>
</section>
</back>
</rfc>
<CODE ENDS>
]]></artwork>
</figure></section></section>
<section anchor="header" title="Header And Document Attributes"><t>The header gives the document title, followed by an optional author
attribution, and a series of document attributes, with no empty lines.</t>
<section anchor="_title_and_basic_attributes" title="Title And Basic Attributes"><t>Document attributes are used to populate attributes of the root <spanx style="verb">rfc</spanx>
element, <spanx style="verb">front</spanx> elements, and document-level processing instructions.</t>
<t>
  <list style="symbols">
    <t><spanx style="verb">:doctype:</spanx> determines  whether the document will be considered
<spanx style="verb">rfc</spanx> or <spanx style="verb">internet-draft</spanx>, and interprets other attributes
accordingly.</t>
    <t>Certain attributes (<spanx style="verb">workgroup</spanx>, <spanx style="verb">area</spanx>, <spanx style="verb">keyword</spanx>) are comma
delimited, and result in repeated RFC XML elements.</t>
  </list>
</t>
<t><xref target="source-asciirfc-header"/> demonstrates how to set the document header
in AsciiRFC, with its rendering in RFC XML v3 shown in
<xref target="source-asciirfc-header-v3"/>.</t>
<figure anchor="source-asciirfc-header" title="AsciiRFC Document Header">
  <artwork type="asciidoc"><![CDATA[
<CODE BEGINS>
= The Holy Hand Grenade of Antioch
Arthur son of Uther Pendragon
:doctype: internet-draft
:abbrev: Hand Grenade of Antioch
:updates: 8140
:submission-type: independent
:name: draft-camelot-holy-grenade-01
:status: informational
:consensus: false
:area: General, Operations and Management
:keyword: rabbits, grenades, antioch, camelot
:ipr: trust200902
:toc-include: true
:sort-refs: true
:revdate: 2018-04-15T00:00:00Z
<CODE ENDS>
]]></artwork>
</figure>
<figure anchor="source-asciirfc-header-v3" title="AsciiRFC Document Header Rendered As RFC XML v3">
  <artwork type="xml"><![CDATA[
<CODE BEGINS>
<rfc xmlns:xi= "http://www.w3.org/2001/XInclude" ipr= "trust200902"
updates="8140" sortRefs="true" tocInclude="true"
submissionType="independent" prepTime="2018-04-18T03:35:33Z"
version="3">
<front>
<title abbrev= "Hand Grenade of Antioch">The Holy Hand Grenade of
Antioch</title>
<seriesInfo name= "Internet-Draft" status= "informational"
stream="independent" value="draft-camelot-holy-grenade-01"/>
<author fullname= "Arthur son of Uther Pendragon" surname= "Pendragon"
initials="A.">
<organization>Camelot</organization>
<address>
<postal>
<street>Palace</street>
<street>Camel Lot 1</street>
<city>Camelot</city>
<keyword>grenades</keyword>
<keyword>camelot</keyword>

<abstract>

<!-- tag::preamble1[] -->

<CODE ENDS>
]]></artwork>
</figure></section>
<section anchor="_detailed_author_information" title="Detailed Author Information"><t>The document header can spell out further information about authors,
including contact details. The AsciiRFC header is shown in
<xref target="source-asciirfc-header-authors"/> with its rendering in RFC XML v3
shown in <xref target="source-asciirfc-header-authors-v3"/>.</t>
<figure anchor="source-asciirfc-header-authors" title="AsciiRFC Document Header With One Author">
  <artwork type="asciidoc"><![CDATA[
<CODE BEGINS>
= The Holy Hand Grenade of Antioch
Arthur son of Uther Pendragon
:doctype: internet-draft
:abbrev: Hand Grenade of Antioch
:updates: 8140
:submission-type: independent
:name: draft-camelot-holy-grenade-01
:status: informational
:consensus: false
:area: General, Operations and Management
:keyword: rabbits, grenades, antioch, camelot
:ipr: trust200902
:toc-include: true
:sort-refs: true
:revdate: 2018-04-15T00:00:00Z
:fullname: Arthur son of Uther Pendragon
:forename_initials: A.
:lastname: Pendragon
:email: arthur.pendragon@ribose.com
:organization: Camelot
:uri: http://camelot.gov.example
:street: Palace\ Camel Lot 1
:city: Camelot
:region: England
:country: United Kingdom
<CODE ENDS>
]]></artwork>
</figure>
<figure anchor="source-asciirfc-header-authors-v3" title="AsciiRFC Document Header With One Author (RFC XML v3)">
  <artwork type="xml"><![CDATA[
<CODE BEGINS>
<rfc xmlns:xi= "http://www.w3.org/2001/XInclude" ipr= "trust200902"
updates="8140" sortRefs="true" tocInclude="true"
submissionType="independent" prepTime="2018-04-18T03:35:33Z"
version="3">
<front>
<title abbrev= "Hand Grenade of Antioch">The Holy Hand Grenade of
Antioch</title>
<seriesInfo name= "Internet-Draft" status= "informational"
stream="independent" value="draft-camelot-holy-grenade-01"/>
<author fullname= "Arthur son of Uther Pendragon" surname= "Pendragon"
initials="A.">
<organization>Camelot</organization>
<address>
<postal>
<street>Palace</street>
<street>Camel Lot 1</street>
<city>Camelot</city>
<region>England</region>
<country>United Kingdom</country>
</postal>
<email>arthur.pendragon@ribose.com</email>
<uri>http://camelot.gov.example</uri>
</address>
</author>
<date day= "15" month= "April" year="2018"/>
<area>General</area>
<area>Operations and Management</area>
<keyword>rabbits</keyword>
<keyword>grenades</keyword>
<keyword>antioch</keyword>
<keyword>camelot</keyword>

<abstract>

<!-- tag::preamble1[] -->

<CODE ENDS>
]]></artwork>
</figure>
<t>Details of a second, third etc. author, including their organization and
contact details, are provided by suffixing the relevant author attributes with
<spanx style="verb">_2</spanx>, <spanx style="verb">_3</spanx>  etc., as shown in <xref target="source-asciirfc-header-mauthors"/> and
its RFC XML v3 rendering <xref target="source-asciirfc-header-mauthors-v3"/>.</t>
<figure anchor="source-asciirfc-header-mauthors">
  <artwork type="asciidoc"><![CDATA[
<CODE BEGINS>
= An API For Calendar-Based Fortune Heuristics Services
Gabriel Destiny; Charise Luck
:doctype: internet-draft
:abbrev: Calendar Fortune Heuristics API
:name: draft-divination-cfapi-00
:status: informational
:ipr: trust200902
:area: Internet
:submission-type: independent
:intended-series: informational
:revdate: 2018-03-23T00:00:00Z
:lastname: Destiny
:fullname: Gabriel Destiny
:forename_initials: G.
:organization: Divination Inc.
:email: gabriel.destiny@ribose.com
:street: 9288 N Divine Street
:city: Dunn
:code: 28334
:region: NC
:country: United States of America
:lastname_2: Luck
:fullname_2: Charise Luck
:forename_initials_2: C.
:organization_2: Divination Inc.
:email_2: charise.luck@ribose.com
:street_2: 9288 N Divine Street
:city_2: Dunn
:code_2: 28334
:region_2: NC
:country_2: United States of America
<CODE ENDS>
]]></artwork>
</figure>
<figure anchor="source-asciirfc-header-mauthors-v3" title="AsciiRFC Document Header With Multiple Authors (RFC XML v3)">
  <artwork type="xml"><![CDATA[
<CODE BEGINS>
<rfc xmlns:xi= "http://www.w3.org/2001/XInclude" ipr= "trust200902"
submissionType="independent" prepTime="2018-04-18T03:35:38Z"
version="3">
<front>
<title abbrev= "Calendar Fortune Heuristics API">An API For
Calendar-Based Fortune Heuristics Services</title>
<seriesInfo name= "Internet-Draft" status= "informational"
stream="independent" value="draft-divination-cfapi-00"/>
<seriesInfo name= "" status="informational"
value="draft-divination-cfapi-00"/>
<author fullname= "Gabriel Destiny" surname= "Destiny" initials="G.">
<organization>Divination Inc.</organization>
<address>
<postal>
<street>9288 N Divine Street</street>
<city>Dunn</city>
<region>NC</region>
<code>28334</code>
<country>United States of America</country>
</postal>
<email>gabriel.destiny@ribose.com</email>
</address>
</author>
<author fullname= "Charise Luck" surname= "Luck" initials="C.">
<organization>Divination Inc.</organization>
<address>
<postal>
<street>9288 N Divine Street</street>
<city>Dunn</city>
<region>NC</region>
<code>28334</code>
<country>United States of America</country>
</postal>
<email>charise.luck@ribose.com</email>
</address>
</author>
<date day= "23" month= "March" year="2018"/>
<area>Internet</area>

<abstract>

<!-- tag::sample[] -->


<CODE ENDS>
]]></artwork>
</figure>
<t>The initial author attribution in AsciiRFC, e.g.
<spanx style="verb">Gabriel Destiny; Charlise Luck</spanx>
in the example above, expects a strict format of First Name, zero or
more Middle Names, Last name, and cannot process honorifics like "Dr."
or suffixes like "Jr.".</t>
<t>Name attributes with any degree of complexity should be overriden by
using the <spanx style="verb">:fullname:</spanx> and <spanx style="verb">:lastname:</spanx> attributes. The AsciiRFC
<spanx style="verb">:forename_initials:</spanx> attribute replaces the built-in Asciidoctor
syntax <spanx style="verb">:initials:</spanx> attribute (which includes the surname initial),
and is not automatically populated from the name attribution.</t></section>
<section anchor="_xml_processing_information" title="XML Processing Information"><t>A document header may also contain attribute headers which are treated
as XML processing instructions. An AsciiRFC example is shown in
<xref target="source-asciirfc-header-pi"/> with its rendering in
<xref target="source-asciirfc-header-pi-v3"/>. (Note that several processing
instructions are included by default in the output of the AsciiRFC
processor.)</t>
<figure anchor="source-asciirfc-header-pi" title="AsciiRFC Document Header With XML Processing Information">
  <artwork type="asciidoc"><![CDATA[
<CODE BEGINS>
= The Holy Hand Grenade of Antioch
Arthur son of Uther Pendragon
:doctype: internet-draft
:abbrev: Hand Grenade of Antioch
:updates: 8140
:submission-type: independent
:name: draft-camelot-holy-grenade-01
:status: informational
:consensus: false
:ipr: trust200902
:comments: yes
:notedraftinprogress: yes
<CODE ENDS>
]]></artwork>
</figure>
<figure anchor="source-asciirfc-header-pi-v3" title="AsciiRFC Document Header With XML Processing Information (RFC XML v3)">
  <artwork type="xml"><![CDATA[
<CODE BEGINS>
<?xml version= "1.0" encoding= "US-ASCII"?>
<?xml-stylesheet type= "text/xsl" href= "rfc2629.xslt"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc comments= "yes"?>
<?rfc notedraftinprogress= "yes"?>
<?rfc strict= "yes"?>
<?rfc compact= "yes"?>
<?rfc subcompact= "no"?>
<?rfc toc= "yes"?>
<?rfc tocdepth= "4"?>
<?rfc symrefs= "yes"?>
<?rfc sortrefs= "true"?>
<rfc xmlns:xi= "http://www.w3.org/2001/XInclude" ipr= "trust200902"
updates="8140" sortRefs="true" tocInclude="true"
submissionType="independent" prepTime="2018-04-18T03:35:33Z"
version="3">
<front>
<title abbrev= "Hand Grenade of Antioch">The Holy Hand Grenade of
Antioch</title>
<seriesInfo name= "Internet-Draft" status= "informational"
stream="independent" value="draft-camelot-holy-grenade-01"/>
<author fullname= "Arthur son of Uther Pendragon" surname= "Pendragon"
initials="A.">
<organization>Camelot</organization>
<address>
<postal>
<street>Palace</street>
<street>Camel Lot 1</street>
<city>Camelot</city>
<keyword>grenades</keyword>
<CODE ENDS>
]]></artwork>
</figure>
<t>In the foregoing, values for the processing instructions <spanx style="verb">strict</spanx>, <spanx style="verb">compact</spanx>,
<spanx style="verb">toc</spanx> etc are included by default; but <spanx style="verb">comments</spanx> and <spanx style="verb">notedraftinprogress</spanx>
are included as specified in the AsciiRFC document header. The default
values provided for processing instructions can in fact be overriden through
the AsciiRFC document header.</t></section>
<section anchor="_asciirfc_specific_document_attributes" title="AsciiRFC-specific Document Attributes"><t>A few document attributes are specific to the operation of the RFC XML
document converter:</t>
<t>
  <list style="hanging">
    <t hangText=":no-rfc-bold-bcp14: false "><vspace blankLines="0"/>overrides the wrapping by default of boldface uppercase BCP14
<xref target="RFC2119"/> words (e.g. <spanx style="verb">*MUST NOT*</spanx>) with the <spanx style="verb">bcp14</spanx> element.</t>
    <t hangText=":smart-quotes: false "><vspace blankLines="0"/>overrides Asciidoctor&#8217;s conversion of straight quotes and
apostrophes to smart quotes and apostrophes.</t>
    <t hangText=":inline-definition-lists: true "><vspace blankLines="0"/>overrides the RFC XML v2 <spanx style="verb">idnits</spanx> requirement that a blank line be
inserted between a definition list term and its definition.</t>
  </list>
</t>
<figure anchor="source-asciirfc-header-rfc" title="AsciiRFC Document Header Without RFC-specific Attributes">
  <artwork type="asciidoc"><![CDATA[
<CODE BEGINS>
= The Holy Hand Grenade of Antioch
Arthur son of Uther Pendragon
:doctype: internet-draft
:status: informational
:name: draft-camelot-holy-grenade-00

== Section 1
The specification *MUST NOT* use the word _doesn't_.
<CODE ENDS>
]]></artwork>
</figure>
<figure anchor="source-asciirfc-header-rfc-v3" title="AsciiRFC Document Header Without RFC-specific Attributes (RFC XML v3)">
  <artwork type="xml"><![CDATA[
<CODE BEGINS>
<rfc submissionType= "IETF" prepTime= "2017-11-25T10:23:39Z"
version="3">
<front>
<title>The Holy Hand Grenade of Antioch</title>
<seriesInfo name= "Internet-Draft" status= "informational"
stream="IETF" value="draft-camelot-holy-grenade-00" />
<author fullname= "Arthur son of Uther Pendragon" surname=
"Pendragon"
initials="A.">
</author>
<date day= "25" month= "November" year="2017" />
</front>
<middle>
<section anchor= "_section_1" numbered= "false">
<name>Section 1</name>
<t>The specification  <bcp14>MUST NOT</bcp14>
use the word <em> doesn&#8217;t</em>.</t>
</section>
</middle>
</rfc>
<CODE ENDS>
]]></artwork>
</figure>
<figure anchor="source-asciirfc-header-override" title="AsciiRFC Document Header With Overridden RFC-specific Attributes">
  <artwork type="asciidoc"><![CDATA[
<CODE BEGINS>
= The Holy Hand Grenade of Antioch
Arthur son of Uther Pendragon
:doctype: internet-draft
:status: informational
:name: draft-camelot-holy-grenade-00
:no-rfc-bold-bcp14: false
:smart-quotes: false

== Section 1
The specification *MUST NOT* use the word _doesn't_.
<CODE ENDS>
]]></artwork>
</figure>
<figure anchor="source-asciirfc-header-override-v3" title="AsciiRFC Document Header With Overridden RFC-specific Attributes (RFC XML v3)">
  <artwork type="xml"><![CDATA[
<CODE BEGINS>
<rfc submissionType= "IETF" prepTime= "2017-11-25T10:23:39Z"
version="3">
<front>
<title>The Holy Hand Grenade of Antioch</title>
<seriesInfo name= "Internet-Draft" status= "informational"
stream="IETF" value="draft-camelot-holy-grenade-00" />
<author fullname= "Arthur son of Uther Pendragon" surname=
"Pendragon"
initials="A.">
</author>
<date day= "25" month= "November" year="2017" />
</front>
<middle>
<section anchor= "_section_1" numbered= "false">
<name>Section 1</name>
<t>The specification <strong>MUST NOT</strong>
use the word <em>doesn't</em>.</t>
</section>
</middle>
</rfc>
<CODE ENDS>
]]></artwork>
</figure></section></section>
<section anchor="preamble" title="Preamble"><t>The preamble in AsciiRFC is the text between the end of the document header
(which terminates with a blank line) and the first section of text.</t>
<t>Any paragraphs of text in the preamble are treated as an abstract, and may
optionally be tagged with the <spanx style="verb">abstract</spanx> style attribute.</t>
<t>Any notes in the preamble are treated as a <spanx style="verb">note</spanx> element.</t>
<t>An example of setting the preamble is given in
<xref target="source-asciirfc-preamble"/> with its rendering in
<xref target="source-asciirfc-preamble-v3"/>.</t>
<figure anchor="source-asciirfc-preamble" title="AsciiRFC With Preamble">
  <artwork type="asciidoc"><![CDATA[
<CODE BEGINS>

[abstract]
The menagerie of beasts and artefacts depicted in RFC8140
may be usefully supplemented by other renowned figures of
Internet and more general lore. This document extends the
menagerie to the seminal fable of the
"Holy Hand Grenade of Antioch", as depicted in the
Monty Python film "Monty Python and the Holy Grail",
as well as "Spamalot", the musical inspired by the movie.

[NOTE,remove-in-rfc=false]
.Spamalot
The relevance of the musical "Spamalot" to Internet lore should be
obvious to the reader; but in case of doubt, see also
Section 1 ("What is Spam*?") of RFC2635.

<CODE ENDS>
]]></artwork>
</figure>
<figure anchor="source-asciirfc-preamble-v3" title="AsciiRFC With Preamble (RFC XML v3)">
  <artwork type="xml"><![CDATA[
<CODE BEGINS>
<abstract>

<t>The menagerie of beasts and artefacts depicted in RFC8140
may be usefully supplemented by other renowned figures of
Internet and more general lore. This document extends the
menagerie to the seminal fable of the
"Holy Hand Grenade of Antioch", as depicted in the
Monty Python film "Monty Python and the Holy Grail",
as well as "Spamalot", the musical inspired by the
movie.</t></abstract><note removeInRFC= "false">
<name>Spamalot</name>
<t>The relevance of the musical "Spamalot" to Internet lore should be
obvious to the reader; but in case of doubt, see also
Section 1 ("What is Spam*?") of RFC2635.</t>
</note>

</abstract>
<CODE ENDS>
]]></artwork>
</figure></section>
<section anchor="_sections_and_paragraphs" title="Sections and Paragraphs"><t>Section headers are given with a sequence of <spanx style="verb">=</spanx>, where the number of
instances of <spanx style="verb">=</spanx> gives the header level.
The document itself opens with a single <spanx style="verb">=</spanx>, and sections within it
must be started with a minimum of <spanx style="verb">==</spanx>.</t>
<t>Section numbering is toggled with the
in-document attribute <spanx style="verb">:sectnums:</spanx> (on), <spanx style="verb">:sectnums!:</spanx> (off). The boolean
<spanx style="verb">toc</spanx> attribute can also be set on sections, indicating whether the
section can be included in the document&#8217;s table of contents.</t>
<t><xref target="source-asciirfc-sections"/> shows how sections and paragraphs are
used in AsciiRFC, and its rendered form is shown in
<xref target="source-asciirfc-sections-v3"/>.</t>
<figure anchor="source-asciirfc-sections" title="AsciiRFC With Sections">
  <artwork type="asciidoc"><![CDATA[
<CODE BEGINS>

[toc=exclude]
:sectnums!:
== Terminology

The key words "*MUST*", "*MUST NOT*", "*REQUIRED*", "*SHALL*",
"*SHALL NOT*", "*SHOULD*", "*SHOULD NOT*", "*RECOMMENDED*",
"*NOT RECOMMENDED*", "*MAY*", and "*OPTIONAL*" in this document
are to be interpreted as described in BCP 14 <<RFC2119>> <<RFC8174>>
when, and only when, they appear in all capitals, as shown here.

:sectnums:
== Introduction

<<RFC8140>> refers to the intended move of RFC formatting to
XML2RFC v3 <<RFC7990>>, in the following terms:

<CODE ENDS>
]]></artwork>
</figure>
<figure anchor="source-asciirfc-sections-v3" title="AsciiRFC With Sections (RFC XML v3)">
  <artwork type="xml"><![CDATA[
<CODE BEGINS>

</front><middle>
<section anchor= "_terminology" toc= "exclude" numbered="false">
<name>Terminology</name>
<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>",
"<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>",
"<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD
NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>",
"<strong>NOT RECOMMENDED</strong>", "<bcp14>MAY</bcp14>", and
"<bcp14>OPTIONAL</bcp14>" in this document
are to be interpreted as described in BCP 14 <xref target= "RFC2119"/>
<xref target="RFC8174"/>
when, and only when, they appear in all capitals, as shown here.</t>
</section>
<section anchor= "_introduction" numbered=
"true"><name>Introduction</name><t><xref target= "RFC8140"/> refers to
the intended move of RFC formatting to
XML2RFC v3 <xref target= "RFC7990"/>, in the following terms:</t>

<CODE ENDS>
]]></artwork>
</figure>
<t>Note that skipped sections, such as defining a section using <spanx style="verb">====</spanx>
within a section defined using <spanx style="verb">==</spanx>, is not allowed in AsciiRFC
syntax. Doing so will trigger an error with the following message:</t>
<figure>
  <artwork type="console"><![CDATA[
asciidoctor: WARNING: _filename_: line _X_:
  section title out of sequence: expected level 2, got level 3
]]></artwork>
</figure></section>
<section anchor="figures" title="Figures"><t>AsciiRFC examples (corresponding to RFC XML Figures), source code
Listings, and Literals (preformatted text) are all delimited blocks.
Listings and Literals can occur nested within Examples.</t>
<t>An AsciiRFC example with a figure is given in
<xref target="source-asciirfc-figure"/>, and its rendering in
<xref target="source-asciirfc-figure-v3"/>.</t>
<figure anchor="source-asciirfc-figure" title="AsciiRFC With A Figure">
  <artwork type="asciidoc"><![CDATA[
<CODE BEGINS>

[[killer-bunny]]
.A Photo Of The Killer Rabbit of Caerbannog Taken In Secret
====
[alt=The Killer Bunny, in ASCII]
....
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
\\\\\\\\\\\\\\\\\\\\\^^^^^^^^^^^^^^^^^^^^^^\\\\\\\\\\\\\\\\\
\\\\\\\\\\\\\\\\\\\<<#MWSHARPMWMWMWTEETHWMWWM>>>\\\\\\\\\\\\
\\\\\\\\\\\\\\\<<<#WMMWMWDEEPMDARKWCAVEMWWMMWM##>>>>\\\\\\\\
\\\\\\\\\\\\\<<#WMWMWMWMWWM/^MWMWMWMWMWMW^WMWMWMMW#>>>\\\\\\
\\\\\\\\\\\\<<#WMWMBEASTMW// \MWABBITWMW/ \MWMWMWMW##\\\\\\\
\\\\\\\\\\##MWMWMMWMWMWMWM\\  \MWMWMWMW/  /MWMWMWMWM##\\\\\\
\\\\\\\\##WMWMWMWMMWMWMWMWM\\  \MWMWMW/  /MWMWMWMMWMWMWM##\\
\\\\\\\##MWMMRAVENOUSMWMWMWM\\  \====/  /MWMRABBITMWMWMWMW##
\\\\\\##MWMWMWMWMMWMWMWMWMW[[            ]WMWMWMMWMWMWMWMWMW
\\\\\##MWMWMWMWCARNIVOROUSW[[   3    3   ]MWMWTOOMDARKWMWMMW
\\\\##MWMWDARKMWMWMWMWMWMWM//\     o    /MWMWMWMMWMWMWMMWMWM
\\##MWMWMMKILLERABBITWMWMM//| \___vv___/ \WMPITCHWBLACKWMWMW
\##MWMWMWMMWMWMWMWMWMMWMW// |   \-^^-/   |MWMWMWMMWMWMWMWMWM
MWMWMWMMWMWVERYMDARKWMMW//  |            |MWMCAERBANNOGWMWMW
MWMWMWMMWMWMWMWMWMWMWMM{{  /             /MWMWMMWMWMWMWMWMWM
MULTRADARKWMWMHELPMWMWMW\\ \  |      |  |MWMCANMMWMWMWMMWMWW
MWMWMWMWMMWMWMWMWMMWMWMWM\\ | |_     |  |_WMWMMYOUMWMMWWMWMW
MWMMWMWMWMWMBLACKWMWMWMWWM\_|__-\-----\__-\MWMWMWMREADMWMWWM
MWMWMWMMWMWMWMWMMWMWMWWMWMWMWMMWMWMWMWMWMWMWMWMWMWMWMMTHISWW
MWVERYMMSCARYMWMWWMWMMWMWMWMWMWMWMWMWMWMWMWMWWMWMMWMWIWM'.',
MWMWMMWMW======MWMMCANTWSEEMAMTHINGMMWMWMWMWMWMWMBETMMW` . `
MWMWMWM// SKULL \MWMWMWMMWSCREAMMMWMWMWMMWMNOTMWMWMWW  ` . \
MWMWMW|| |X||X| |MWMWCALLMMEWMMWMWMMWMWMWMWWM - ` ~ . , '
MWMWMW||___ O __|MWMWMWMMWMWMWMWMMW'   ___________//   -_^_-
MWMWMW \\||_|_||MWMW      '   . .     <_|_|_||_|__|     \O/
MW   \\/\||v v||  -\\-------___     .   .,         \     |
    \\|  \_CHIN/  ==-(|CARROT/)\>     \\/||//         v\/||/
       )          /--------^-^            ,.            \|//
 #  \(/ .\\|x//                              " ' '
  . ,                \\||//        \||\\\//   \\
....
====

[[killer-source]]
.C Code To Lure Killer Rabbit Back To Cave
====
[source,c]
----
<CODE BEGINS>
/* Locate the Killer Rabbit */
int type;
unsigned char *killerRabbit =
LocateCreature(&caerbannog, "killer rabbit");
if( killerRabbit == 0 ){
puts("The Killer Rabbit of Caerbannog is out of town.");
return LOST_CREATURE;
}

/* Load Cave */
unsigned char *cave = LoadPlace(&caerbannog,
"The Cave Of Caerbannog");
if( cave == 0 ){
puts("The Cave of Caerbannog must have moved.");
return LOST_PLACE;
}

/* Lure the Killer Rabbit back into the Cave */
unsigned char *carrot = allocateObjectInPlace(
carrot("fresh"), cave);
if( carrot == 0 ){
puts("No carrot, no rabbit.");
return LOST_LURE;
}

/* Finally, notify the Killer Rabbit to act */
return notifyCreature(killerRabbit, &carrot);
<CODE ENDS>
----
====


<CODE ENDS>
]]></artwork>
</figure>
<figure anchor="source-asciirfc-figure-v3" title="AsciiRFC With A Figure (RFC XML v3)">
  <artwork type="xml"><![CDATA[
<CODE BEGINS>

<figure anchor= "killer-bunny">
<name>A Photo Of The Killer Rabbit of Caerbannog Taken In
Secret</name>
<artwork type= "ascii-art" alt= "The Killer Bunny"><![CDATA[
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
\\\\\\\\\\\\\\\\\\\\\^^^^^^^^^^^^^^^^^^^^^^\\\\\\\\\\\\\\\\\
\\\\\\\\\\\\\\\\\\\<<#MWSHARPMWMWMWTEETHWMWWM>>>\\\\\\\\\\\\
\\\\\\\\\\\\\\\<<<#WMMWMWDEEPMDARKWCAVEMWWMMWM##>>>>\\\\\\\\
\\\\\\\\\\\\\<<#WMWMWMWMWWM/^MWMWMWMWMWMW^WMWMWMMW#>>>\\\\\\
\\\\\\\\\\\\<<#WMWMBEASTMW// \MWABBITWMW/ \MWMWMWMW##\\\\\\\
\\\\\\\\\\##MWMWMMWMWMWMWM\\  \MWMWMWMW/  /MWMWMWMWM##\\\\\\
\\\\\\\\##WMWMWMWMMWMWMWMWM\\  \MWMWMW/  /MWMWMWMMWMWMWM##\\
\\\\\\\##MWMMRAVENOUSMWMWMWM\\  \====/  /MWMRABBITMWMWMWMW##
\\\\\\##MWMWMWMWMMWMWMWMWMW[[            ]WMWMWMMWMWMWMWMWMW
\\\\\##MWMWMWMWCARNIVOROUSW[[   3    3   ]MWMWTOOMDARKWMWMMW
\\\\##MWMWDARKMWMWMWMWMWMWM//\     o    /MWMWMWMMWMWMWMMWMWM
\\##MWMWMMKILLERABBITWMWMM//| \___vv___/ \WMPITCHWBLACKWMWMW
\##MWMWMWMMWMWMWMWMWMMWMW// |   \-^^-/   |MWMWMWMMWMWMWMWMWM
MWMWMWMMWMWVERYMDARKWMMW//  |            |MWMCAERBANNOGWMWMW
MWMWMWMMWMWMWMWMWMWMWMM{{  /             /MWMWMMWMWMWMWMWMWM
MULTRADARKWMWMHELPMWMWMW\\ \  |      |  |MWMCANMMWMWMWMMWMWW
MWMWMWMWMMWMWMWMWMMWMWMWM\\ | |_     |  |_WMWMMYOUMWMMWWMWMW
MWMMWMWMWMWMBLACKWMWMWMWWM\_|__-\-----\__-\MWMWMWMREADMWMWWM
MWMWMWMMWMWMWMWMMWMWMWWMWMWMWMMWMWMWMWMWMWMWMWMWMWMWMMTHISWW
MWVERYMMSCARYMWMWWMWMMWMWMWMWMWMWMWMWMWMWMWMWWMWMMWMWIWM'.',
MWMWMMWMW======MWMMCANTWSEEMAMTHINGMMWMWMWMWMWMWMBETMMW` . `
MWMWMWM// SKULL \MWMWMWMMWSCREAMMMWMWMWMMWMNOTMWMWMWW  ` . \
MWMWMW|| |X||X| |MWMWCALLMMEWMMWMWMMWMWMWMWWM - ` ~ . , '
MWMWMW||___ O __|MWMWMWMMWMWMWMWMMW'   ___________//   -_^_-
MWMWMW \\||_|_||MWMW      '   . .     <_|_|_||_|__|     \O/
MW   \\/\||v v||  -\\-------___     .   .,         \     |
    \\|  \_CHIN/  ==-(|CARROT/)\>     \\/||//         v\/||/
       )          /--------^-^            ,.            \|//
 #  \(/ .\\|x//                              " ' '
  . ,                \\||//        \||\\\//   \\
]]]]><![CDATA[></artwork>
</figure>
<figure anchor= "killer-source">
<name>C Code To Lure Killer Rabbit Back To Cave</name>
<sourcecode type= "c"><![CDATA[
<CODE BEGINS>
/* Locate the Killer Rabbit */
int type;
unsigned char *killerRabbit =
LocateCreature(&caerbannog, "killer rabbit");
if( killerRabbit == 0 ){
puts("The Killer Rabbit of Caerbannog is out of town.");
return LOST_CREATURE;
}

/* Load Cave */
unsigned char *cave = LoadPlace(&caerbannog,
"The Cave Of Caerbannog");
if( cave == 0 ){
puts("The Cave of Caerbannog must have moved.");
return LOST_PLACE;
}

/* Lure the Killer Rabbit back into the Cave */
unsigned char *carrot = allocateObjectInPlace(
carrot("fresh"), cave);
if( carrot == 0 ){
puts("No carrot, no rabbit.");
return LOST_LURE;
}

/* Finally, notify the Killer Rabbit to act */
return notifyCreature(killerRabbit, &carrot);
<CODE ENDS>
]]]]><![CDATA[></sourcecode>
</figure>

<CODE ENDS>
]]></artwork>
</figure>
<t>If an AsciiRFC Listing or Literal occurs outside of an Example
(<xref target="source-asciirfc-literal"/>), the RFC XML converter will supply the
surrounding Figure element (<xref target="source-asciirfc-literal-v3"/>).</t>
<figure anchor="source-asciirfc-literal" title="AsciiRFC With ASCII Art Without Figure Wrapping">
  <artwork type="asciidoc"><![CDATA[
<CODE BEGINS>

[[hand-grenade-figure]]
.The Holy Hand Grenade of Antioch (don't pull the pin)
]]></artwork>
</figure>
<figure>
<artwork alt= "Holy Hand Grenade of Antioch"><![CDATA[
                        ______
                       \\/  \/
                      __\\  /__
                     ||  //\   |
                     ||__\\/ __|
                        ||  |    ,---,
                        ||  |====`\  |
                        ||  |    '---'
                      ,--'*`--,
                    _||#|***|#|
                 _,/.-'#|* *|#`-._
               ,,-'#####|   |#####`-.
             ,,'########|   |########`,
            //##########| o |##########\
           ||###########|   |###########|
          ||############| o |############|
          ||------------'   '------------|
          ||o  o  o  o  o   o  o  o  o  o|
           |-----------------------------|
           ||###########################|
            \\#########################/
             `..#####################,'
               ``..###############_,'
                  ``--.._____..--'
                     `''-----''`
]]></artwork>
</figure>
<figure>
<preamble>&lt;CODE ENDS&gt;</preamble>
<artwork><![CDATA[

]]></artwork>
</figure>
<figure anchor= "source-asciirfc-literal-v3" title= "AsciiRFC With ASCII
Art Without Figure Wrapping (RFC XML v3)">
<artwork type= "xml"><![CDATA[
<CODE BEGINS>

<figure anchor= "hand-grenade-figure">
<name>The Holy Hand Grenade of Antioch (don't pull the pin)</name>
<artwork type= "ascii-art" alt= "Holy Hand Grenade of
Antioch"><![CDATA[
                        ______
                       \\/  \/
                      __\\  /__
                     ||  //\   |
                     ||__\\/ __|
                        ||  |    ,---,
                        ||  |====`\  |
                        ||  |    '---'
                      ,--'*`--,
                    _||#|***|#|
                 _,/.-'#|* *|#`-._
               ,,-'#####|   |#####`-.
             ,,'########|   |########`,
            //##########| o |##########\
           ||###########|   |###########|
          ||############| o |############|
          ||------------'   '------------|
          ||o  o  o  o  o   o  o  o  o  o|
           |-----------------------------|
           ||###########################|
            \\#########################/
             `..#####################,'
               ``..###############_,'
                  ``--.._____..--'
                     `''-----''`
]]]]><![CDATA[></artwork>
</figure>

<CODE ENDS>
]]></artwork>
</figure></section>
<section anchor= "lists" title= "Lists"><section anchor= "_basic_lists"
title="Basic Lists"><t>AsciiRFC supports ordered, unordered, and
definition lists.
Indentation of ordered and unordered lists is indicated by repeating
the list item prefix (<spanx style= "verb">*</spanx> and <spanx
style="verb">.</spanx> respectively); for definition
lists, it is indicated by incrementing the number of definition term
delimiters
(<spanx style= "verb">::</spanx>).</t>
<t>List attributes can be used to specify the type of symbol used for
ordered lists.</t>
<t>An example of an unordered list is shown in
<xref target= "source-asciirfc-unordered-list"/> (with its rendered
version in
<xref target= "source-asciirfc-unordered-list-v3"/>). An example of an
ordered list
with ordered and unordered sublists is
shown in <xref target= "source-asciirfc-ordered-list"/> (with its
rendered version
in <xref target= "source-asciirfc-ordered-list-v3"/>). An example of a
definition
list is shown in <xref target= "source-asciirfc-definition-list"/> (with
its
rendered version in <xref target=
"source-asciirfc-definition-list-v3"/>).</t>
<figure anchor= "source-asciirfc-unordered-list" title= "AsciiRFC With
Unordered lists">
<artwork type= "asciidoc"><![CDATA[
<CODE BEGINS>

* Killed
** Sir Bors
** Sir Gawain
** Sir Ector
* Soiled Himself
** Sir Robin
* Panicked
** King Arthur
* Employed Ordnance
** The Lector
** Brother Maynard
* Scoffed
** Tim the Enchanter

<CODE ENDS>
]]></artwork>
</figure>
<figure anchor= "source-asciirfc-unordered-list-v3" title= "AsciiRFC
With Unordered Lists (RFC XML v3)">
<artwork type= "asciidoc"><![CDATA[
<CODE BEGINS>

<ul>
<li>
<t>Killed</t>
<ul>
<li>Sir Bors</li>
<li>Sir Gawain</li>
<li>Sir Ector</li>
</ul>
</li>
<li>
<t>Soiled Himself</t>
<ul>
<li>Sir Robin</li>
</ul>
</li>
<li>
<t>Panicked</t>
<ul>
<li>King Arthur</li>
</ul>
</li>
<li>
<t>Employed Ordnance</t>
<ul>
<li>The Lector</li>
<li>Brother Maynard</li>
</ul>
</li>
<li>
<t>Scoffed</t>
<ul>
<li>Tim the Enchanter</li>
</ul>
</li>
</ul>

<CODE ENDS>
]]></artwork>
</figure>
<figure anchor= "source-asciirfc-ordered-list" title= "AsciiRFC With
Ordered lists">
<artwork type= "asciidoc"><![CDATA[
<CODE BEGINS>

. Preamble: St Attila Benediction
. Feast of the People on Sundry Foods
** Lambs
** Sloths
** Carp
** Anchovies
** Orangutangs
** Breakfast Cereals
** Fruit Bats
** _et hoc genus omne_
. Take out the Holy Pin
. The Count
[upperalpha]
.. Count is to Three: no more, no less
.. Not Four
.. Nor Two, except if the count then proceeds to Three
.. Five is Right Out
. Lob the Holy Hand Grenade of Antioch towards the Foe
. The Foe, being naughty in the *LORD's* sight, [bcp14]#shall# snuff it

<CODE ENDS>
]]></artwork>
</figure>
<figure anchor= "source-asciirfc-ordered-list-v3" title= "AsciiRFC With
Ordered Lists (RFC XML v3)">
<artwork type= "xml"><![CDATA[
<CODE BEGINS>

<ol type= "1">
<li>Preamble: St Attila Benediction</li>
<li>
<t>Feast of the People on Sundry Foods</t>
<ul>
<li>Lambs</li>
<li>Sloths</li>
<li>Carp</li>
<li>Anchovies</li>
<li>Orangutangs</li>
<li>Breakfast Cereals</li>
<li>Fruit Bats</li>
<li>
<em>et hoc genus omne</em>
</li>
</ul>
</li>
<li>Take out the Holy Pin</li>
<li>
<t>The Count</t>
<ol type= "A">
<li>Count is to Three: no more, no less</li>
<li>Not Four</li>
<li>Nor Two, except if the count then proceeds to Three</li>
<li>Five is Right Out</li>
</ol>
</li>
<li>Lob the Holy Hand Grenade of Antioch towards the Foe</li>
<li>The Foe, being naughty in the <strong>LORD's</strong> sight,
<bcp14>SHALL</bcp14> snuff it</li>
</ol>

<CODE ENDS>
]]></artwork>
</figure>
<figure anchor= "source-asciirfc-definition-list" title= "AsciiRFC With
Definition lists">
<artwork type= "asciidoc"><![CDATA[
<CODE BEGINS>

Holy Hand Grenade of Antioch::
Ordnance deployed by Brother Maynard under the incantation of a
lector, in order to dispense with the Foes of the Virtuous.
See <<hand-grenade-figure>>.

Holy Spear of Antioch::
A supposed relic of the crucifixion of Jesus Christ, this is one
of at least four claimed instances of the lance that pierced
Christ's side. Its historical significance lies in inspiring
crusaders to continue their siege of Antioch in 1098.

Sovereign's Orb of the United Kingdom::
Part of the Crown Jewels of the United Kingdom, the Sovereign's
Orb is a hollow gold sphere set with jewels and topped with a
cross.  It was made for Charles II in 1661. See <<sovereign-orb>>.

<CODE ENDS>
]]></artwork>
</figure>
<figure anchor= "source-asciirfc-definition-list-v3" title= "AsciiRFC
With Definition Lists (RFC XML v3)">
<artwork type= "xml"><![CDATA[
<CODE BEGINS>

<dl>
<dt>Holy Hand Grenade of Antioch</dt>
<dd>Ordnance deployed by Brother Maynard under the incantation of a
lector, in order to dispense with the Foes of the Virtuous.
See <xref target= "hand-grenade-figure"/>.</dd>
<dt>Holy Spear of Antioch</dt>
<dd>A supposed relic of the crucifixion of Jesus Christ, this is one
of at least four claimed instances of the lance that pierced
Christ's side. Its historical significance lies in inspiring
crusaders to continue their siege of Antioch in 1098.</dd>
<dt>Sovereign's Orb of the United Kingdom</dt>
<dd>Part of the Crown Jewels of the United Kingdom, the Sovereign's
Orb is a hollow gold sphere set with jewels and topped with a
cross.  It was made for Charles II in 1661. See <xref target=
"sovereign-orb"/>.</dd>
</dl>

<CODE ENDS>
]]></artwork>
</figure></section>
<section anchor= "_list_continuation" title= "List Continuation"><t>A
list item by default spans a single paragraph. A following paragraph
or other block element can be appended to the current list item by
prefixing it with <spanx style= "verb">+</spanx> in a separate line.</t>
<t>See the "List Continuation" section in <xref target=
"Asciidoctor-Manual"/> for more
information.</t>
<t>An example of list continuation with text is shown in
<xref target= "source-asciirfc-list-text"/> with its rendered version in
<xref target= "source-asciirfc-list-text-v3"/>.</t>
<figure anchor= "source-asciirfc-list-text" title= "AsciiRFC List With
Text Continuation">
<artwork type= "asciidoc"><![CDATA[
<CODE BEGINS>

Trojan Rabbit::
In their siege of the French-occupied castle which may already
contain an instance of the Grail, Sir Bedevere the Wise proposes to
use a Trojan Rabbit to infiltrate the castle, with a raiding party
to take the French "not only by surprise, but totally unarmed."
+
The proposal, unsurprisingly, proved abortive. The more so as the
raiding party forgot to hide within the Trojan Rabbit, before the
French soldiers took the Trojan Rabbit inside the castle.

Killer Rabbit of Caerbannog::
Guarding the entrance to the Cave of Caerbannog; see <<caerbannog>>.

<CODE ENDS>
]]></artwork>
</figure>
<figure anchor= "source-asciirfc-list-text-v3" title= "AsciiRFC List
With Text Continuation (RFC XML v3)">
<artwork type= "xml"><![CDATA[
<CODE BEGINS>

<dl>
<dt>Trojan Rabbit</dt>
<dd>
<t>In their siege of the French-occupied castle which may already
contain an instance of the Grail, Sir Bedevere the Wise proposes to
use a Trojan Rabbit to infiltrate the castle, with a raiding party
to take the French "not only by surprise, but totally unarmed."</t>
<t>The proposal, unsurprisingly, proved abortive. The more so as the
raiding party forgot to hide within the Trojan Rabbit, before the
French soldiers took the Trojan Rabbit inside the castle.</t>
</dd>
<dt>Killer Rabbit of Caerbannog</dt>
<dd>Guarding the entrance to the Cave of Caerbannog; see <xref target=
"caerbannog"/>.</dd>
</dl>

<CODE ENDS>
]]></artwork>
</figure>
<t>(Multiple paragraphs are not permitted within a list item in RFC XML
v2.  The RFC XML converter deals with this by converting paragraph
breaks into line breaks within a list item.)</t>
<t>List continuations can also be embedded to populate a list item with
a
sequence of blocks as a unit (in an Asciidoctor syntax open block).</t>
<t>An example of list continuation with a delimited block is shown in
<xref target= "source-asciirfc-list-block"/> with its rendered version
in
<xref target= "source-asciirfc-list-block-v3"/>.</t>
<figure anchor= "source-asciirfc-list-block" title= "AsciiRFC List With
Block Continuation">
<artwork type= "asciidoc"><![CDATA[
<CODE BEGINS>

. Take out the Holy Pin
. The Count
+
----
integer count;
for count := 1 step 1 until 3 do
say(count)
comment Five is Right Out
----
. Lob the Holy Hand Grenade of Antioch towards the Foe
. Foe snuffs it

<CODE ENDS>
]]></artwork>
</figure>
<figure anchor= "source-asciirfc-list-block-v3" title= "AsciiRFC List
With Block Continuation (RFC XML v3)">
<artwork type= "xml"><![CDATA[
<CODE BEGINS>

<ol type= "1">
<li>Take out the Holy Pin</li>
<li>
<t>The Count</t>
<figure>
<sourcecode><![CDATA[
integer count;
for count := 1 step 1 until 3 do
say(count)
comment Five is Right Out
]]]]><![CDATA[></sourcecode>
</figure>
</li>
<li>Lob the Holy Hand Grenade of Antioch towards the Foe</li>
<li>Foe snuffs it</li>
</ol>

<CODE ENDS>
]]></artwork>
</figure>
<t>AsciiDoc, and thus AsciiRFC, considers paragraphs to be the basic
level of blocks, and does not permit lists to be nested within them:
any text after a list is considered to be a new paragraph.</t>
<t>Therefore, markup as shown in <xref target=
"source-asciirfc-list-impossible"/>
cannot be generated via AsciiRFC.</t>
<figure anchor= "source-asciirfc-list-impossible" title= "This RFC XML
v3 Output Cannot Be Generated Using AsciiRFC">
<artwork type= "xml"><![CDATA[
<CODE BEGINS>
<t>
This is the start of a paragraph.
<ul>
<li>List Entry 1</li>
<li>
<t>List Entry 2</t>
<t>Note 2.</t>
</li>
</ul>
And this is the continuation of the paragraph.
</t>
<CODE ENDS>
]]></artwork>
</figure></section></section>
<section anchor= "_blockquotes" title= "Blockquotes"><t>Asciidoctor
syntax supports blockquotes and quotations of verse; its
block quotations permit arbitrary levels of quote nesting.  RFC XML
v3, and thus AsciiRFC, only supports one level of blockquotes.</t>
<t>Unlike RFC XML v2, RFC XML v3 does not support line breaks outside of
tables, so verse quotations are converted to prose in the v3
converter.</t>
<t>An example of using AsciiRFC Blockquotes is given in
<xref target= "source-asciirfc-blockquotes"/> with its rendered version
in
<xref target= "source-asciirfc-blockquotes-v3"/>.</t>
<figure anchor= "source-asciirfc-blockquotes" title= "AsciiRFC
Blockquote Usage">
<artwork type= "asciidoc"><![CDATA[
<CODE BEGINS>

[quote,attribution="A. Farrel"]
____
Although the RFC Editor has recently dragged the IETF kicking and
screaming into the twentieth century [RFC7990] [RFC7996], there is a
yearning among all right-thinking Internet architects to "keep it
simple" and to return to the olden days when pigs could be given
thrust without anyone taking undue offence.
____

<CODE ENDS>
]]></artwork>
</figure>
<figure anchor= "source-asciirfc-blockquotes-v3" title= "AsciiRFC
Blockquote Usage (RFC XML v3)">
<artwork type= "xml"><![CDATA[
<CODE BEGINS>

<blockquote quotedFrom= "A. Farrel">
<t>Although the RFC Editor has recently dragged the IETF kicking and
screaming into the twentieth century [RFC7990] [RFC7996], there is a
yearning among all right-thinking Internet architects to "keep it
simple" and to return to the olden days when pigs could be given
thrust without anyone taking undue offence.</t>
</blockquote>

<CODE ENDS>
]]></artwork>
</figure></section>
<section anchor= "_notes_and_asides" title= "Notes And
Asides"><t>Asciidoctor syntax supports a range of "admonitions",
including notes,
warnings, and tips. They are indicated by a paragraph prefix (e.g.
<spanx style= "verb">WARNING:</spanx>), or as a block with an admonition
style attribute.</t>
<t>All admonitions are conflated in AsciiRFC, being converted to <spanx
style= "verb">note</spanx>
elements in the document preamble, and <spanx style= "verb">cref</spanx>
elements in the main
document.</t>
<t>This means that no admonitions will therefore appear in the
textual output, unless forced to through the <spanx style=
"verb">comments</spanx> processing
instruction. A sample admonition is shown in <xref target=
"source-asciirfc-note"/>,
with its rendered output in <xref target=
"source-asciirfc-note-v3"/>.</t>
<figure anchor= "source-asciirfc-note" title= "An AsciiRFC Adminition
Block">
<artwork type= "asciidoc"><![CDATA[
<CODE BEGINS>

[NOTE,display=true,source=Author]
====
Image courtesy of
https://camelot.gov.example/creatures-in-ascii/
====

<CODE ENDS>
]]></artwork>
</figure>
<figure anchor= "source-asciirfc-note-v3" title= "An AsciiRFC Adminition
Block (RFC XML v3)">
<artwork type= "xml"><![CDATA[
<CODE BEGINS>

<t><cref display= "true" source= "Author">Image courtesy of
<eref target=
"https://camelot.gov.example/creatures-in-ascii/"/></cref></t>

<CODE ENDS>
]]></artwork>
</figure>
<t>With RFC XML v2, note that no inline formatting is permitted for
<spanx style= "verb">cref</spanx> elements, and any such formatting is
therefore stripped
for v2 by the converter.</t>
<t>Because paragraphs in AsciiRFC cannot contain any other blocks, a
comment at the end of a paragraph is treated as a new block. In the
document converter, any such comments are moved inside the preceding
RFC XML paragraph; if the comment is at the start of a section, as in
the example above, it is wrapped inside a paragraph.</t>
<t>The RFC XML v3 converter also supports <spanx style=
"verb">asides</spanx> (Asciidoctor syntax
Sidebars). A sample is shown in <xref target=
"source-asciirfc-sidebar"/>, with its
rendered output in <xref target= "source-asciirfc-sidebar-v3"/>.</t>
<figure anchor= "source-asciirfc-sidebar" title= "An AsciiRFC Sidebar
Block">
<artwork type= "asciidoc"><![CDATA[
<CODE BEGINS>

****
While the exchange at the French-occupied castle is one of
the more memorable scenes of _Monty Python and the Holy Grail_,
the Trojan Rabbit has not reached the same level of cultural
resonance as its more murderous counterpart. Reasons for this
may include:

* Less overall screen-time dedicated to the Trojan Rabbit.

* The Trojan Rabbit as projectile has already been anticipated
by the Cow as projectile.
****

<CODE ENDS>
]]></artwork>
</figure>
<figure anchor= "source-asciirfc-sidebar-v3" title= "An AsciiRFC Sidebar
Block Rendered As An Aside (RFC XML v3)">
<artwork type= "xml"><![CDATA[
<CODE BEGINS>

<aside><t>While the exchange at the French-occupied castle is one of
the more memorable scenes of <em>Monty Python and the Holy Grail</em>,
the Trojan Rabbit has not reached the same level of cultural
resonance as its more murderous counterpart. Reasons for this
may include:</t>
<ul>
<li>Less overall screen-time dedicated to the Trojan Rabbit.</li>
<li>The Trojan Rabbit as projectile has already been anticipated
by the Cow as projectile.</li>
</ul></aside>

<CODE ENDS>
]]></artwork>
</figure>
<t>Comments given in AsciiDoc syntax (notated with initial <spanx style=
"verb">//</spanx>) are
not intended to be shown in the rendered output, and will not appear
in the output as XML comments. XML comments can be generated by using
the <spanx style= "verb">[comment]#&#8230;&#8203;#</spanx> inline
formatting macro, or the <spanx style="verb">[.comment]</spanx> role
attribute on blocks. A sample is shown in <xref target=
"source-asciirfc-sidebar"/> with its
rendered output in <xref target= "source-asciirfc-sidebar-v3"/>.</t>
<figure anchor= "source-asciirfc-comment" title= "AsciiRFC delimited
text intended as an XML Comment">
<artwork type= "asciidoc"><![CDATA[
<CODE BEGINS>

The exchange of projectile animals was the beginning of a
long-running fruitful relationship between the British and the
French peoples,
[comment]#TODO: Will need to verify that claim.# which
arguably predates the traditional English enmity with the
French. [comment]#Strictly speaking, the Knights are Welsh.#

[.comment]
--
This document, as it turns out, has a profusion of XML comments.

As expected, they are ignored in any rendering of the document.
--


<CODE ENDS>
]]></artwork>
</figure>
<figure anchor= "source-asciirfc-comment-v3" title= "AsciiRFC delimited
text Rendered As An XML Comment (RFC XML v3)">
<artwork type= "xml"><![CDATA[
<CODE BEGINS>

<t>The exchange of projectile animals was the beginning of a
long-running fruitful relationship between the British and the
French peoples,


<!-- TODO: Will need to verify that claim. -->

which
arguably predates the traditional English enmity with the
French.

<!-- Strictly speaking, the Knights are Welsh. -->

</t>


<!-- This document, as it turns out, has a profusion of XML comments.

As expected, they are ignored in any rendering of the document.
-->



<CODE ENDS>
]]></artwork>
</figure></section>
<section anchor= "_tables" title= "Tables"><t>AsciiRFC tables, like RFC
XML v3, support distinct table heads, bodies
and feet; cells spanning multiple rows and columns; and horizontal
alignment. The larger range of table formatting options available in
RFC XML v2 is also supported.</t>
<t>A sample of an AsciiRFC table is shown in <xref target=
"source-asciirfc-table"/>,
with its rendered output in <xref target=
"source-asciirfc-table-v3"/>.</t>
<t>Neither version of RFC XML is as expressive in its table structure as
Asciidoctor syntax. RFC XML, for example, does not permit blocks
within table cells.</t>
<figure anchor= "source-asciirfc-table" title= "An AsciiRFC Table">
<artwork type= "asciidoc"><![CDATA[
<CODE BEGINS>

[grid=all,options="footer"]
|===
|French Castle | Cave of Caerbannog

2+|King Arthur
2+|Patsy
2+|Sir Bedevere the Wise
2+|Sir Galahad the Pure
2+|Sir Lancelot the Brave
2+|Sir Robin the Not-quite-so-brave-as-Sir-Lancelot
|French Guard with Outrageous Accent| Tim the Enchanter
|Other French Guards | Brother Maynard
| | The Lector
.3+^|not yet recruited
>|Sir Bors
>|Sir Gawain
>|Sir Ector

|Retinue of sundry knights
|Retinue of sundry more knights than at the French Castle
|===

<CODE ENDS>
]]></artwork>
</figure>
<figure anchor= "source-asciirfc-table-v3" title= "An AsciiRFC Table
(RFC XML v3)">
<artwork type= "xml"><![CDATA[
<CODE BEGINS>

<table>
<thead>
<tr>
<th align= "left">French Castle</th>
<th align= "left">Cave of Caerbannog</th>
</tr>
</thead>
<tbody>
<tr>
<td colspan= "2" align= "left">King Arthur</td>
</tr>
<tr>
<td colspan= "2" align= "left">Patsy</td>
</tr>
<tr>
<td colspan= "2" align= "left">Sir Bedevere the Wise</td>
</tr>
<tr>
<td colspan= "2" align= "left">Sir Galahad the Pure</td>
</tr>
<tr>
<td colspan= "2" align= "left">Sir Lancelot the Brave</td>
</tr>
<tr>
<td colspan= "2" align= "left">Sir Robin the
Not-quite-so-brave-as-Sir-Lancelot</td>
</tr>
<tr>
<td align= "left">French Guard with Outrageous Accent</td>
<td align= "left">Tim the Enchanter</td>
</tr>
<tr>
<td align= "left">Other French Guards</td>
<td align= "left">Brother Maynard</td>
</tr>
<tr>
<td align= "left"/>
<td align= "left">The Lector</td>
</tr>
<tr>
<td rowspan= "3" align= "center">not yet recruited</td>
<td align= "right">Sir Bors</td>
</tr>
<tr>
<td align= "right">Sir Gawain</td>
</tr>
<tr>
<td align= "right">Sir Ector</td>
</tr>
</tbody>
<tfoot>
<tr>
<td align= "left">Retinue of sundry knights</td>
<td align= "left">Retinue of sundry more knights than at the
French Castle</td>
</tr>
</tfoot>
</table>

<CODE ENDS>
]]></artwork>
</figure></section>
<section anchor= "_inline_formatting" title= "Inline
Formatting"><section anchor=
"_italics_boldface_monospace_subscripts_superscripts" title="Italics,
Boldface, Monospace, Subscripts, Superscripts"><t>AsciiRFC supports
italics, boldface, monospace, subscripts and
superscripts, just like RFC XML v3.</t>
<t>The inline formatting syntax given in <xref target=
"source-asciirfc-inline"/>
produces the RFC XML v3 output given in <xref target=
"source-asciirfc-inline-v3"/>.</t>
<figure anchor= "source-asciirfc-inline" title= "Inline Formatting In
AsciiRFC">
<artwork type= "asciidoc"><![CDATA[
<CODE BEGINS>

The participants of that renowned exercise in cross-cultural
communication, to wit the exchange between the
_Knights of the Round Table_
and the taunting French soldiers serving under *Guy de Lombard* are,
properly speaking, outside the scope of this `menagerie`, being more
or less human. Notwithstanding, several^ish^ beasts both animate~d~
and wooden played a significant part in this encounter; most
notably:

* The Projectile Cow, see <<projectile-cow>>
* The Trojan Rabbit, see <<trojan-rabbit>>

<CODE ENDS>
]]></artwork>
</figure>
<figure anchor= "source-asciirfc-inline-v3" title= "Inline Formatting In
AsciiRFC (RFC XML v3)">
<artwork type= "xml"><![CDATA[
<CODE BEGINS>

<t>The participants of that renowned exercise in cross-cultural
communication, to wit the exchange between the
<em>Knights of the Round Table</em>
and the taunting French soldiers serving under <strong>Guy de
Lombard</strong> are,
properly speaking, outside the scope of this <tt>menagerie</tt>, being
more
or less human. Notwithstanding, several<sup>ish</sup> beasts both
animate<sub>d</sub>
and wooden played a significant part in this encounter; most
notably:</t>
<ul>
<li>The Projectile Cow, see <xref target= "projectile-cow"/></li>
<li>The Trojan Rabbit, see <xref target= "trojan-rabbit"/></li>
</ul>

<CODE ENDS>
]]></artwork>
</figure></section>
<section anchor= "_formatting_bcp_14_keywords" title= "Formatting BCP 14
Keywords"><t>RFC XML v3 also supports tagging of BCP14 keywords <xref
target= "RFC2119"/>
<xref target= "RFC8174"/>; this is done in AsciiRFC either by tagging
them with a
custom formatting span (e.g. <spanx style= "verb">MUST NOT</spanx>), or
by converting
any boldface all-caps words recognised as BCP14 words (unless the
<spanx style= "verb">:no-rfc-bold-bcp14: false</spanx> document
attribute is set).</t>
<t>Any spans of BCP14 text delimited by inline formatting delimiters
need to be contained within a single line of text; in Asciidoctor
syntax, formatting spans are broken up across line breaks.</t>
<t>This usage is demonstrated in <xref target= "source-asciirfc-bcp14"/>
with the
rendered output in <xref target= "source-asciirfc-bcp14-v3"/>.</t>
<figure anchor= "source-asciirfc-bcp14" title= "BCP14 Keywords In
AsciiRFC">
<artwork type= "asciidoc"><![CDATA[
<CODE BEGINS>

The instructions in the _Book of Armaments_ on the proper deployment
of the Holy Hand Grenade of Antioch [bcp14]#may# be summarized as
follows, although this summary *SHALL NOT* be used as a substitute
for a reading from the Book of Armaments:

<CODE ENDS>
]]></artwork>
</figure>
<figure anchor= "source-asciirfc-bcp14-v3" title= "BCP14 Keywords In
AsciiRFC (RFC XML v3)">
<artwork type= "xml"><![CDATA[
<CODE BEGINS>

<t>The instructions in the <em>Book of Armaments</em> on the proper
deployment
of the Holy Hand Grenade of Antioch <bcp14>MAY</bcp14> be summarized as
follows, although this summary <bcp14>SHALL NOT</bcp14> be used as a
substitute
for a reading from the Book of Armaments:</t>

<CODE ENDS>
]]></artwork>
</figure></section>
<section anchor= "_escaping_asciirfc_syntax" title= "Escaping AsciiRFC
Syntax"><t>Formatting delimiters like <spanx style= "verb">*</spanx> can
be escaped with backslash (<spanx style="verb">\*</spanx>);
double formatting delimiters, like <spanx style= "verb">**</spanx> and
<spanx style="verb">__</spanx>, need to be
escaped with double backslash (<spanx style= "verb">\\**</spanx>).</t>
<t>Escaping delimiters is not always reliable, and for double delimiters
it is preferable to use HTML entities (<spanx style=
"verb">&amp;#42;&amp;#42;</spanx>), or attribute
references (references to the value of attributes set in the document
header) as shown in <xref target= "source-asciirfc-escaping"/>.</t>
<figure anchor= "source-asciirfc-escaping" title= "Escaping AsciiRFC
Syntax Using Attributes">
<artwork type= "asciidoc"><![CDATA[
<CODE BEGINS>
:dblast: **

`{dblast}`
<CODE ENDS>
]]></artwork>
</figure>
<t>In extreme circumstances (such as quoting AsciiDoc syntax), you may
need to resort to altering the substitutions behaviour within a given
block of of AsciiDoc; see the "Applying Substitutions" section of
<xref target= "Asciidoctor-Manual"/>.</t></section></section>
<section anchor= "_links" title= "Links"><t>Common URL formats are
recognised automatically as hyperlinks in
AsciiRFC, which inherits this excellent feature from AsciiDoc, and are
rendered as such.</t>
<t>Any hyperlinked text is appended after the hyperlink in square
brackets.</t>
<t>An example is given in <xref target= "source-asciirfc-link"/> with
its rendered
version in <xref target= "source-asciirfc-link-v3"/>.</t>
<figure anchor= "source-asciirfc-link" title= "An AsciiRFC Link">
<artwork type= "asciidoc"><![CDATA[
<CODE BEGINS>

<<killer-bunny,The following depiction>> of the fearsome beast
has been sourced from
http://camelot.gov.example/avatars/rabbit[Rabbit-SCII],
<<killer-source,accompanied>>
by C code that was used in this accurate depiction of the
Killer Rabbit:

<CODE ENDS>
]]></artwork>
</figure>
<figure anchor= "source-asciirfc-link-v3" title= "An AsciiRFC Link (RFC
XML v3)">
<artwork type= "xml"><![CDATA[
<CODE BEGINS>

<t><xref target= "killer-bunny">The following depiction</xref> of the
fearsome beast
has been sourced from
<eref target=
"http://camelot.gov.example/avatars/rabbit">Rabbit-SCII</eref>,
<xref target= "killer-source">accompanied</xref>
by C code that was used in this accurate depiction of the
Killer Rabbit:</t>

<CODE ENDS>
]]></artwork>
</figure>
<t>To prevent hyperlinking of a URL, prefix it with a backslash, as
shown
in <xref target= "source-asciirfc-link-lit"/> with its rendered version
in
<xref target= "source-asciirfc-link-lit-v3"/>.</t>
<figure anchor= "source-asciirfc-link-lit" title= "A Literal AsciiRFC
Link">
<artwork type= "asciidoc"><![CDATA[
<CODE BEGINS>

The screaming move into the twenty-*first* century is accompanied by
a move back to the late twentieth century, with ASCII stylings more
wonted in haunts like \ftp://ftp.wwa.com/pub/Scarecrow (known to be
accessible in 1996.)

<CODE ENDS>
]]></artwork>
</figure>
<figure anchor= "source-asciirfc-link-lit-v3" title= "A Literal AsciiRFC
Link (RFC XML v3)">
<artwork type= "xml"><![CDATA[
<CODE BEGINS>

<t>The screaming move into the twenty-<strong>first</strong> century is
accompanied by
a move back to the late twentieth century, with ASCII stylings more
wonted in haunts like ftp://ftp.wwa.com/pub/Scarecrow (known to be
accessible in 1996.)</t>

<CODE ENDS>
]]></artwork>
</figure></section>
<section anchor= "cross-references" title= "Cross-References"><section
anchor= "_basic_referencing" title="Basic Referencing"><t>Anchors for
cross-references are notated as <spanx
style="verb">[[&#8230;&#8203;]]</spanx> or <spanx
style="verb">[#&#8230;&#8203;]</spanx>, and
can be inserted on their own line in front of most blocks.</t>
<t>Asciidoctor syntax supports anchors in a much wider range of contexts
than is supported than RFC XML v3 (let alone v2); anchors that are not
supported for that version of RFC XML are simply ignored by the
converter.</t>
<t>Note that anchors in RFC XML are constrained to the format
<spanx style= "verb">[A-Za-z_:][[A-Za-z0-9_:.-]*</spanx> (i.e. <spanx
style="verb">xsd:ID</spanx>).</t>
<t>Cross-references to anchors are notated as <spanx style=
"verb">&lt;&lt;...&gt;&gt;</spanx>; cross-references
with custom text as <spanx style=
"verb">&lt;&lt;reference,text&gt;&gt;</spanx>.</t>
<t>An example of using cross-references in AsciiRFC is given in
<xref target= "source-asciirfc-xref"/> with its rendered output in
<xref target= "source-asciirfc-xref-v3"/>.</t>
<figure anchor= "source-asciirfc-xref" title= "Setting And Referring To
Cross-References In AsciiRFC">
<artwork type= "asciidoc"><![CDATA[
<CODE BEGINS>

The _Cave of Caerbannog_ has been well-established in the mythology
of Camelot (as recounted by Monty Python) as the lair of the
Legendary Black Beast of Arrrghhh, more commonly known today as the
*Killer Rabbit of Caerbannog* <<killer_rabbit_caerbannog>>.
It is the encounter between the Killer Rabbit of Caerbannog and the
Knights of the Round Table, armed with the Holy Hand Grenade of
Antioch (see the <<holy_hand_grenade,following section>>), that we
recount here through monospace font and multiple spaces.

[[killer_rabbit_caerbannog]]
=== The Killer Rabbit of Caerbannog

<CODE ENDS>
]]></artwork>
</figure>
<figure anchor= "source-asciirfc-xref-v3" title= "Setting And Referring
To Cross-References In AsciiRFC (RFC XML v3)">
<artwork type= "xml"><![CDATA[
<CODE BEGINS>

<t>The <em>Cave of Caerbannog</em> has been well-established in the
mythology
of Camelot (as recounted by Monty Python) as the lair of the
Legendary Black Beast of Arrrghhh, more commonly known today as the
<strong>Killer Rabbit of Caerbannog</strong> <xref target=
"killer_rabbit_caerbannog"/>.
It is the encounter between the Killer Rabbit of Caerbannog and the
Knights of the Round Table, armed with the Holy Hand Grenade of
Antioch (see the <xref target= "holy_hand_grenade">following
section</xref>), that we
recount here through monospace font and multiple spaces.</t>
<section anchor= "killer_rabbit_caerbannog" numbered= "true"><name>The
Killer Rabbit of Caerbannog</name>
<CODE ENDS>
]]></artwork>
</figure></section>
<section anchor= "_referencing_with_attributes" title= "Referencing With
Attributes"><t>While Asciidoctor syntax natively does not support
attributes on
cross-references, AsciiRFC works around that by embedding formatting
information as templated text within cross-references:</t>
<t>
<list style= "symbols">
<t><spanx style="verb">format= x: text</spanx> populates the <spanx
style="verb">xref@format</spanx> attribute</t>
<t>a section number followed by one of the words <spanx style=
"verb">of</spanx>, <spanx style="verb">parens</spanx>,
<spanx style= "verb">bare</spanx>, <spanx style="verb">text</spanx> is
treated as a <spanx style="verb">relref</spanx> reference to an external
document.</t>
</list>
</t>
<t>An example of referencing with attributes is given in
<xref target= "source-asciirfc-xref-att"/> with its output in
<xref target= "source-asciirfc-xref-att-v3"/>.</t>
<figure anchor= "source-asciirfc-xref-att" title= "Cross-References With
Attributes In AsciiRFC">
<artwork type= "asciidoc"><![CDATA[
<CODE BEGINS>

The *Killer Rabbit of Caerbannog*, that most formidable foe of
the Knights and of all that is holy or carrot-like, has been
depicted diversely in lay and in song. We venture to say,
_contra_ the claim made in <<RFC8140,4.1 of: Ze Vompyre>>,
that the Killer Rabbit of Caerbannog truly is the most afeared
of all the creatures. Short of sanctified ordnance such as
<<holy_hand_grenade,format=title>>, there are few remedies
known against its awful lapine powers.

<CODE ENDS>
]]></artwork>
</figure>
<figure anchor= "source-asciirfc-xref-att-v3" title= "Cross-References
With Attributes In AsciiRFC (RFC XML v3)">
<artwork type= "xml"><![CDATA[
<CODE BEGINS>

<t>The <strong>Killer Rabbit of Caerbannog</strong>, that most
formidable foe of
the Knights and of all that is holy or carrot-like, has been
depicted diversely in lay and in song. We venture to say,
<em>contra</em> the claim made in <relref section= "4.1" displayFormat=
"of" target="RFC8140">Ze Vompyre</relref>,
that the Killer Rabbit of Caerbannog truly is the most afeared
of all the creatures. Short of sanctified ordnance such as
<xref format= "title" target= "holy_hand_grenade"/>, there are few
remedies
known against its awful lapine powers.</t>

<CODE ENDS>
]]></artwork>
</figure></section>
<section anchor= "_indexing" title= "Indexing"><t>Inline index entries
are notated as <spanx style= "verb">((&#8230;&#8203;))</spanx>. Index
entries
which do not appear in the text are notated as <spanx style=
"verb">(((&#8230;&#8203;)))</spanx>;
such entries may include a separate sub-entry, separated from
the main entry by comma.</t>
<figure anchor= "source-asciirfc-index" title= "AsciiRFC Index Entries">
<artwork type= "asciidoc"><![CDATA[
<CODE BEGINS>

The solution to the impasse at the ((Cave of Caerbannog)) was
provided by the successful deployment of the
*Holy Hand Grenade of Antioch* (see <<hand-grenade-figure>>)
(((Holy Hand Grenade of Antioch))).
Any similarity between the Holy Hand Grenade of Antioch and the
mythical _Holy Spear of Antioch_ is purely intentional;
(((relics, Christian))) any similarity between the Holy Hand Grenade
of Antioch and the _Sovereign's Orb of the United Kingdom_
(see <<sovereign-orb>>) is putatively fortuitous.
(((relics, monarchic)))

<CODE ENDS>
]]></artwork>
</figure>
<figure anchor= "source-asciirfc-index-v3" title= "AsciiRFC Index
Entries (RFC XML v3)">
<artwork type= "xml"><![CDATA[
<CODE BEGINS>

<t>The solution to the impasse at the Cave of Caerbannog<iref item=
"Cave of Caerbannog"/> was
provided by the successful deployment of the
<strong>Holy Hand Grenade of Antioch</strong> (see <xref target=
"hand-grenade-figure"/>)
<iref item= "Holy Hand Grenade of Antioch"/>.
Any similarity between the Holy Hand Grenade of Antioch and the
mythical <em>Holy Spear of Antioch</em> is purely intentional;
<iref item= "relics" subitem= "Christian"/> any similarity between the
Holy Hand Grenade
of Antioch and the <em>Sovereign's Orb of the United Kingdom</em>
(see <xref target= "sovereign-orb"/>) is putatively fortuitous.
<iref item= "relics" subitem= "monarchic"/></t>

<CODE ENDS>
]]></artwork>
</figure></section></section>
<section anchor= "_inclusions" title= "Inclusions"><t>AsciiRFC inherits
the Asciidoctor syntax "include" directive
<xref target= "Asciidoctor-Manual"/> to include external files in a
master AsciiRFC
document.</t>
<t>This directive is capable of sophisticated document merging,
including
adjusting the heading levels of the included text, selecting text
within specified tags or line numbers to be included, and adjusting
the indentation of code snippets in merged text.</t>
<t>Its basic syntax is given in <xref target=
"source-asciirfc-include"/>.</t>
<figure anchor= "source-asciirfc-include" title= "Inclusions In
AsciiRFC">
<artwork type= "asciidoc"><![CDATA[
<CODE BEGINS>
include::path[
leveloffset=_offset_,
lines=_ranges_,
tag(s)=_name(s)_,
indent=_depth_
]
<CODE ENDS>
]]></artwork>
</figure>
<t>If a file is included in an AsciiRFC document, ensure it ends with a
blank line.  An inclusion that results in its final block not being
delimited with a blank line from what follows can lead to
unpredictable results.</t></section>
<section anchor= "encoding" title= "Encoding and Entities"><t>XML
accepts the full range of characters in the world&#8217;s languages
through UTF-8 character encoding, and one of the motivations for the
move by the IETF from plain text to RFC XML has been to allow
non-ASCII characters to be included in RFCs.</t>
<t>However, current RFC XML v2 tools still do not support UTF-8, and
alternative tooling support for UTF-8 also remains patchy. Out of an
abundance of caution, the RFC XML converter uses US-ASCII for its
character encoding, and renders any non-ASCII characters as HTML
entities.</t>
<t>AsciiRFC accepts HTML entities as input, even though they are not
part
of the W3C XML specification. HTML entities such as <spanx style=
"verb">&amp;nbsp;</spanx> feature in
examples of RFC XML provided by the IETF. In order to prevent
dependence of the XML output from extraneous entity definitions, any
such entities are rendered in the XML as decimal character entities.</t>
<t>An example of how AsciiRFC renders non-ASCII UTF-8 characters
are given in <xref target= "source-asciirfc-enc"/> with the output in
<xref target= "source-asciirfc-enc-v3"/>.</t>
<figure anchor= "source-asciirfc-enc" title= "UTF-8 Characters In
AsciiRFC">
<artwork type= "asciidoc"><![CDATA[
<CODE BEGINS>

____
&#x2e;&#1499;&#1488;&#1503; &#1488;&#1493;&#1500;&#1497;
&#1497;&#1502;&#1510;&#1488;&#1493;
&#1492;&#1502;&#1497;&#1500;&#1497;&#1501;
&#1492;&#1488;&#1495;&#1512;&#1493;&#1504;&#1493;&#1514; &#1513;&#1500;
&#1497;&#1493;&#1505;&#1507;
.&#1502;&#1488;&#1512;&#1502;&#1514;&#1497;&#1492;
&#x2e;&#1502;&#1497; &#1488;&#1513;&#1512; &#1497;&#1492;&#1497;&#1492;
&#1488;&#1502;&#1497;&#1509; &#1493;&#1489;&#1506;&#1500;
&#1504;&#1508;&#1513; &#1496;&#1492;&#1493;&#1512;&#1492;
&#1497;&#1493;&#1499;&#1500; &#1500;&#1502;&#1510;&#1493;&#1488;
&#1488;&#1514; &#1492;&#1490;&#1489;&#1497;&#1506;
&#1492;&#1511;&#1491;&#1493;&#1513; &#1489;&#1496;&#1497;&#1512;&#1514;
.&#1488;&#1488;&#1488;&#1488;&#1488;&#1488;&#1488;&#1492;

"Here may be found the last words of Joseph&nbsp;of Arimathea.
He who is valiant and pure of spirit may find the Holy Grail
in the castle of &mdash; Aaaargh."
____

<CODE ENDS>
]]></artwork>
</figure>
<figure anchor= "source-asciirfc-enc-v3" title= "UTF-8 Characters In
AsciiRFC Rendered As RFC XML v3">
<artwork type= "xml"><![CDATA[
<CODE BEGINS>

<blockquote><t>&#1499;&#1488;&#1503; &#1488;&#1493;&#1500;&#1497;
&#1497;&#1502;&#1510;&#1488;&#1493;
&#1492;&#1502;&#1497;&#1500;&#1497;&#1501;
&#1492;&#1488;&#1495;&#1512;&#1493;&#1504;&#1493;&#1514; &#1513;&#1500;
&#1497;&#1493;&#1505;&#1507;
.&#1502;&#1488;&#1512;&#1502;&#1514;&#1497;&#1492;
&#1502;&#1497; &#1488;&#1513;&#1512; &#1497;&#1492;&#1497;&#1492;
&#1488;&#1502;&#1497;&#1509; &#1493;&#1489;&#1506;&#1500;
&#1504;&#1508;&#1513; &#1496;&#1492;&#1493;&#1512;&#1492;
&#1497;&#1493;&#1499;&#1500; &#1500;&#1502;&#1510;&#1493;&#1488;
&#1488;&#1514; &#1492;&#1490;&#1489;&#1497;&#1506;
&#1492;&#1511;&#1491;&#1493;&#1513; &#1489;&#1496;&#1497;&#1512;&#1514;
.&#1488;&#1488;&#1488;&#1488;&#1488;&#1488;&#1488;&#1492;</t>
<t>"Here may be found the last words of Joseph&#160;of Arimathea.
He who is valiant and pure of spirit may find the Holy Grail
in the castle of &#8212; Aaaargh."</t></blockquote>

<CODE ENDS>
]]></artwork>
</figure>
<t>Note that because initial period is a formatting character in
Asciidoctor,
we have had to use <spanx style= "verb">&amp;#x2e;</spanx> to escape the
period at the end of Hebrew sentences (which appears
at the start of the line, Hebrew being written Right-to-Left).
Asciidoctor is
not natively equipped to deal with Right-to-Left languages in its
formatting
parsing.</t></section>
<section anchor= "_bibliography" title= "Bibliography"><t>The simple
encoding of bibliography syntax provided by AsciiDoc (and
Asciidoctor syntax) is inadequate for the complexity of bibliographic
markup required by RFC XML.</t>
<t>RFC documents overwhelmingly cite other RFC documents, and canonical
RFC XML bibliographic entries are available at <xref target=
"IETF-BibXML"/>; so it
would be inefficient to encode those entries natively in AsciiRFC, only
to have
them converted back to RFC XML.</t>
<t>The converter provides two means of incorporating bibliographies into
RFC documents authored in AsciiRFC:</t>
<t>
<list style= "symbols">
<t>using raw RFC XML; and</t>
<t>assembling bibliographies in preprocessing.</t>
</list>
</t>
<t>In either case, the RFC XML needs to be well-formed; missing closing
tags can lead to erratic behaviour in the converter.</t>
<section anchor= "_using_raw_rfc_xml" title= "Using Raw RFC XML"><t>In
the first method, bibliographic citations are handled like all
other AsciiRFC cross-references. The bibliographic entries for
normative and informative references are given in the AsciiRFC as
passthrough blocks, which contain the raw RFC XML for all references;
document conversion leaves the raw RFC XML in place.</t>
<t>This approach requires authors to maintain the normative and
informative bibliographies within the document, to update them as
citations are added and removed, and to sort them manually. However,
if the citation is stored on the IETF&#8217;s RFC XML citation libraries
(see <eref target= "https://xml2rfc.tools.ietf.org"/>), AsciiRFC will
automatically
replace it with an external reference to that citation. So the body of
the citation XML can be left out.</t>
<t>For example, the AsciiRFC in <xref target=
"source-bib-asciirfc-inline"/> will
generate the corresponding RFC XML v3 output in <xref target=
"source-bib-xml-inline"/>.</t>
<figure anchor= "source-bib-asciirfc-inline" title= "AsciiRFC Inline
Bibliography">
<artwork type= "asciidoc"><![CDATA[
<CODE BEGINS>

[bibliography]
== Normative References
++++
<reference anchor= "RFC2119"
target="https://www.rfc-editor.org/info/rfc2119">
<front>
<title>Key words for use in RFCs to Indicate
Requirement Levels</title>
<author initials= "S." surname= "Bradner" fullname="S. Bradner">
<organization/>
</author>
<date year= "1997" month= "March"/>
</front>
<seriesInfo name= "BCP" value= "14"/>
<seriesInfo name= "RFC" value= "2119"/>
<seriesInfo name= "DOI" value= "10.17487/RFC2119"/>
</reference>
++++


[bibliography]
== Informative References
++++

<reference anchor= "grail_film">
<front>
<title>Monty Python and the Holy Grail</title>
<author initials= "G." surname= "Chapman"/>
<author initials= "J." surname= "Cleese"/>
<author initials= "E." surname= "Idle"/>
<author initials= "T." surname= "Gilliam"/>
<author initials= "T." surname= "Jones"/>
<author initials= "M." surname= "Palin"/>
<date year= "1975"/>
</front>
</reference>

<reference anchor= "RFC2635"
target="https://www.rfc-editor.org/info/rfc2635">
<front>
<title>DON'T SPEW A Set of Guidelines for Mass Unsolicited
Mailings and Postings (spam*)</title>
<author initials= "S." surname= "Hambridge" fullname="S. Hambridge">
<organization />
</author>
<author initials= "A." surname= "Lunde" fullname="A. Lunde">
<organization />
</author>
<date year= "1999" month= "June" />
</front>
<seriesInfo name= "FYI" value= "35" />
<seriesInfo name= "RFC" value= "2635" />
<seriesInfo name= "DOI" value= "10.17487/RFC2635" />
</reference>

<reference anchor= "RFC7990"
target="https://www.rfc-editor.org/info/rfc7990">
<front>
<title>RFC Format Framework</title>
<author initials= "H." surname= "Flanagan" fullname="H. Flanagan">
<organization/>
</author>
<date year= "2016" month= "December"/>
</front>
<seriesInfo name= "RFC" value= "7990"/>
<seriesInfo name= "DOI" value= "10.17487/RFC7990"/>
</reference>

<reference anchor= "RFC8140"
target="https://www.rfc-editor.org/info/rfc8140">
<front>
<title>
The Arte of ASCII: Or, An True and Accurate Representation of
an Menagerie of Thynges Fabulous and Wonderful in Ye Forme of
Character
</title>
<author initials= "A." surname= "Farrel" fullname="A. Farrel">
<organization/>
</author>
<date year= "2017" month= "April"/>
</front>
<seriesInfo name= "RFC" value= "8140"/>
<seriesInfo name= "DOI" value= "10.17487/RFC8140"/>
</reference>

<reference anchor= 'RFC8174'
target= 'https://www.rfc-editor.org/info/rfc8174'>
<front>
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key
Words</title>
<author initials= 'B.' surname= 'Leiba' fullname='B. Leiba'>
<organization />
</author>
<date year= '2017' month= 'May' />
<abstract><t>RFC 2119 specifies common key words that may be used
in protocol specifications.  This document aims to reduce
the ambiguity by clarifying that only UPPERCASE usage of the
key words have the defined special meanings.</t></abstract>
</front>
<seriesInfo name= 'BCP' value= '14'/>
<seriesInfo name= 'RFC' value= '8174'/>
<seriesInfo name= 'DOI' value= '10.17487/RFC8174'/>
</reference>

++++

<CODE ENDS>
]]></artwork>
</figure>
<figure anchor= "source-bib-xml-inline" title= "AsciiRFC Inline
Bibliography Rendered As RFC XML v3">
<artwork type= "xml"><![CDATA[
<CODE BEGINS>
</section>
</middle><back>
<references anchor= "_normative_references">
<name>Normative References</name>
<xi:include href=
"https://xml2rfc.tools.ietf.org/public/rfc/bibxml/\
reference.RFC.2119.xml"
parse= "text"/>
</references>
<references anchor= "_informative_references">
<name>Informative References</name>
<reference anchor= "grail_film">
<front>
<title>Monty Python and the Holy Grail</title>
<author initials= "G." surname= "Chapman"/>
<author initials= "J." surname= "Cleese"/>
<author initials= "E." surname= "Idle"/>
<author initials= "T." surname= "Gilliam"/>
<author initials= "T." surname= "Jones"/>
<author initials= "M." surname= "Palin"/>
<date year= "1975"/>
</front>
</reference>
<xi:include href=
"https://xml2rfc.tools.ietf.org/public/rfc/bibxml/\
reference.RFC.2635.xml"
parse= "text"/>
<xi:include href=
"https://xml2rfc.tools.ietf.org/public/rfc/bibxml/\
reference.RFC.7990.xml"
parse= "text"/>
<xi:include href=
"https://xml2rfc.tools.ietf.org/public/rfc/bibxml/\
reference.RFC.8140.xml"
parse= "text"/>
<xi:include href=
"https://xml2rfc.tools.ietf.org/public/rfc/bibxml/\
reference.RFC.8174.xml"
parse= "text"/>
</references>
</back>
</rfc>
<CODE ENDS>
]]></artwork>
</figure></section>
<section anchor= "asciidoctor_bibliography" title= "Preprocessing Using
&quot;asciidoctor-bibliography&quot;"><t>The alternative method is to
use a preprocessing tool,
<xref target= "asciidoctor-bibliography"/>, to import citations into the
AsciiRFC
document from an external file of references.</t>
<t>The references file consists of RFC XML reference entries, and still
needs to be managed manually; however the bibliographies are assembled
from that file, sorted, and inserted into the normative and
informative references in preprocessing. Citations in the document
itself are given as macros to be interpreted by the preprocessor; this
allows them to be split into normative and informative references.
(The MMark tool likewise splits reference citations into normative and
informative.)</t>
<t>Integration with the <spanx style=
"verb">asciidoc-bibliography</spanx> gem proceeds as follows:</t>
<t>
<list style= "numbers">
<t>Create an RFC XML references file, consisting of a <spanx style=
"verb">&lt;references&gt;</spanx>
element with individual <spanx style= "verb">&lt;reference&gt;</spanx>
elements inserted, as would be
done for the informative and normative references normally. The
references file will contain all possible references to be used in the
file; the bibliography gem will select which references have actually
been cited in the document.<list style= "letters">
<t>Rather than hand crafting RFC XML references for RFC documents, you
should download them from an authoritative source; e.g.,
<spanx style=
"verb">http://xml.resource.org/public/rfc/bibxml/\
reference.RFC.2119.xml</spanx>.
Note that RFC XML references from this link contains the XML
document declaration, which needs to be removed before being used in
the XML bibliography.</t>
<t>Unlike the case for RFC XML documents created manually, the
references file does not recognise XML entities and will not attempt
to download them during processing.  Any references to
<spanx style= "verb">http://xml.resource.org/public/rfc/bibxml/\
</spanx>
will need to be
downloaded and inserted into the references file.</t>
<t>The RFC XML in the references file will need to be appropriate to
the version of RFC XML used in the main document, as usual. Note that
RFC XML v2 references are forward compatible with v3; v3 contains a
couple of additional elements.</t>
</list></t>
<t>Add to the main document header attributes referencing the
references file (<spanx style= "verb">:bibliography-database:</spanx>),
and the bibliography
style (<spanx style= "verb">:bibliography-style: rfc-v3</spanx>).</t>
<t>References to a normative reference are inserted with the macro
<spanx style= "verb">cite:norm[id]</spanx> instead of <spanx
style="verb">&lt;&lt;id&gt;&gt;</spanx>, where <spanx
style="verb">id</spanx> is the anchor
of the reference.</t>
<t>References to an informative reference are inserted with the
macro
<spanx style= "verb">cite:info[id]</spanx> instead of <spanx
style="verb">&lt;&lt;id&gt;&gt;</spanx>, where <spanx
style="verb">id</spanx> is the anchor
of the reference.</t>
<t>Formatted crossreferences and <spanx style= "verb">relref</spanx>
crossreferences are entered
by inserting the expected raw XML in the <spanx style=
"verb">text</spanx> attribute. Do not use
the <spanx style= "verb">{cite}</spanx> interpolation of the citation. 
For example:<list style="symbols">
<t><spanx style= "verb">&lt;&lt;id,words&gt;&gt;</spanx> = <spanx
style="verb">cite:norm[id, text="&lt;xref target=
'id'&gt;words&lt;/xref&gt;"]</spanx></t>
<t><spanx style="verb">&lt;&lt;id,format= counter:
words&gt;&gt;</spanx> (processed as a formatted cross-reference) =
<spanx style= "verb">cite:norm[id, text="&lt;xref format='counter'
target= 'id'&gt;words&lt;/xref&gt;"]</spanx></t>
<t><spanx style= "verb">&lt;&lt;id,2.4 comma: words&gt;&gt;</spanx>
(processed as relref) =
<spanx style= "verb">cite:norm[id, text="&lt;relref
displayFormat='comma' section='2.4' target= 'id'}/&gt;"]</spanx></t>
<t><spanx style= "verb">&lt;&lt;id#section2_4,2.4 comma:
words&gt;&gt;</spanx>
(processed as relref with a cross-document internal reference) =
<spanx style= "verb">cite:norm[id, text="&lt;relref
relative='section2_4' displayFormat='comma' section='2.4' target=
'id'/&gt;"]</spanx></t>
</list></t>
<t>Normative and Informative References are inserted in the document
through a macro, which occurs where the RFC XML references would be
inserted, as shown in <xref target= "source-bib-abib"/>.</t>
</list>
</t>
<figure anchor= "source-bib-abib" title= "Using asciidoctor-bibliography
For Bibliography Preprocessing">
<artwork type= "asciidoc"><![CDATA[
<CODE BEGINS>
[bibliography]
== Normative References

++++
bibliography::norm[]
++++

[bibliography]
== Informative References

++++
bibliography::info[]
++++
<CODE ENDS>
]]></artwork>
</figure></section></section>
<section anchor= "_rfc_xml_features_not_supported_in_asciidoctor" title=
"RFC XML features not supported in Asciidoctor"><t>The following
features of RFC XML v3 <xref target= "RFC7991"/> and v2 <xref
target="RFC7749"/> are not
supported by the AsciiRFC converter, and would need to be adjusted
manually
after RFC XML is generated:</t>
<texttable suppress-title= "false" style= "full">
<ttcol align= "left">RFC XML element</ttcol>
<ttcol align= "left">RFC XML v3</ttcol>
<ttcol align= "left">RFC XML v2</ttcol>
<c>
<spanx style= "verb">front/boilerplate</spanx>
</c>
<c>Not added by the converter</c>
<c>Not added by the converter</c>
<c>
<spanx style= "verb">iref@primary</spanx>
</c>
<c>N</c>
<c>N</c>
<c><spanx style= "verb">reference</spanx> (and all children)</c>
<c>As Raw XML</c>
<c>As Raw XML</c>
<c>
<spanx style= "verb">table/preamble</spanx>
</c>
<c>Deprecated</c>
<c>N</c>
<c>
<spanx style= "verb">table/postamble</spanx>
</c>
<c>Deprecated</c>
<c>N</c>
<c>
<spanx style= "verb">artwork@width</spanx>
</c>
<c>Only on images</c>
<c>Only on images</c>
<c>
<spanx style= "verb">artwork@height</spanx>
</c>
<c>Only on images</c>
<c>Only on images</c>
</texttable></section>
<section anchor= "_authoring" title= "Authoring"><t>To author an
AsciiRFC document, you should first familiarise yourself
with the <xref target= "Asciidoctor-Manual"/>.</t>
<t>The <xref target= "asciidoctor-rfc"/> Ruby gem source code
distribution also has
samples of individual RFC XML features in v2 and v3, and examples of
self-standing AsciiRFC documents, along with their RFC XML renderings.
(This includes round-tripped RFC XML documents.)</t>
<section anchor= "_using_the_rfc_asciirfc_minimal_template" title=
"Using the &quot;rfc-asciirfc-minimal&quot; template"><t>In addition,
you can clone the sample <spanx style=
"verb">rfc-asciirfc-minimal</spanx>
repository as a template, and populate it for your AsciiRFC document
using the steps shown in <xref target=
"source-asciirfc-sample-template"/>.</t>
<figure anchor= "source-asciirfc-sample-template" title= "Cloning The
AsciiRFC Document Template">
<artwork type= "console"><![CDATA[
$ git clone https://github.com/riboseinc/rfc-asciirfc-minimal
]]></artwork>
</figure></section>
<section anchor= "_installing_asciirfc_backend_processors" title=
"Installing AsciiRFC Backend Processors"><t>Converting your AsciiRFC to
RFC XML is a simple as installing the
Asciidoctor Ruby gem <spanx style= "verb">asciidoctor</spanx> (see
"Installation" at
<xref target= "Asciidoctor"/>) and the <spanx
style="verb">asciidoctor-rfc</spanx> gem in Ruby (through
RubyGems), then running the <spanx style= "verb">asciidoctor</spanx>
executable on the document,
specifying the <spanx style= "verb">asciidoctor-rfc</spanx> gem as a
library.</t>
<t>The necessary steps are shown in <xref target=
"source-asciirfc-install-converters"/>.</t>
<figure anchor= "source-asciirfc-install-converters" title= "Installing
The AsciiRFC Backend Processors">
<artwork type= "console"><![CDATA[
$ gem install asciidoctor-rfc
$ asciidoctor -b rfc3 -r 'asciidoctor-rfc' foo.adoc  # RFC XML v3 output
$ asciidoctor -b rfc2 -r 'asciidoctor-rfc' foo.adoc  # RFC XML v2 output
]]></artwork>
</figure></section>
<section anchor= "_iterating_asciirfc_content" title= "Iterating
AsciiRFC Content"><t>As you author AsciiRFC content, you should iterate
by running the
AsciiRFC conversion frequently, to ensure that you are still
generating valid XML through your markup. The converter makes an
effort to ensure that its XML output is valid, and it issues warnings
about likely issues; it also validates its own XML output against the
RFC XML schema (of the corresponding version), and reports errors in
the XML output in the format shown in
<xref target= "source-asciirfc-schema-error"/>.</t>
<figure anchor= "source-asciirfc-schema-error" title= "Sample Validation
Error Message From AsciiRFC">
<artwork type= "console"><![CDATA[
V3 RELAXNG Validation: 12:0: ERROR: Invalid attribute
sortRefs for element rfc
]]></artwork>
</figure>
<t>Note that validation against the Relax NG RFC XML schema includes
confirming the referential integrity of all cross-references in the
document.</t>
<t>It may be necessary to intervene in the XML output generated by the
converter, either because the block model of AsciiRFC does not conform
with the intended RFC XML (e.g. lists embedded in paragraphs), or
because RFC XML features are required that are not supported within
AsciiRFC.</t></section></section>
<section anchor= "_security_considerations" title= "Security
Considerations">
<t>
<list style= "symbols">
<t>Ensure your AsciiRFC generator comes from a geniune and
trustworthy
source.  This protects your own machine and also prevents injection of
malicious content in your resulting document.</t>
<t>An AsciiRFC generator may cause errors in textual rendering or
link
generation that may lead to security issues.</t>
<t>Creating cross-references (and also bibliographic references) to
external documents may pose risks since the specified external
location may become controlled by a malicious party.</t>
<t>URIs that start with the "http:" or "https:" prefix are
automatically converted into links in AsciiRFC except when escaped
with a backslash before the prefix. A URI that is intended to be text
but unintentionally rendered as a link may cause users to visit a
malicious website with security consequences.</t>
<t>AsciiRFC contains syntax that can directly incorporate remote URI
content, such as <spanx style= "verb">include::</spanx> which allows
remotely-located AsciiRFC
content files.  If a remote URI contains malicious content, this
content will be included in the resulting AsciiRFC document compiled
as RFC XML.  Remotely-linked URIs should always be checked for
malicious content prior to compiling AsciiRFC into RFC XML.</t>
</list>
</t>
</section>
<section anchor= "_iana_considerations" title= "IANA Considerations">
<t>This document does not require any action by IANA.</t>
</section>
</middle><back>
<references title= "Normative References">
&RFC7991;
</references>
<references title= "Informative References">
<reference anchor= "AsciiDoc" target=
"http://www.methods.co.nz/asciidoc/">
<front>
<title>AsciiDoc: Text based document generation</title>
<author initials= "S." surname= "Rackham" fullname="Stuart Rackham">
<organization/>
</author>
<date year= "2013" month= "November"/>
</front>
</reference>
<reference anchor= "AsciiMathML" target= "http://asciimath.org">
<front>
<title>AsciiMath is an easy-to-write markup language for
mathematics.</title>
<author/>
<date year= "2017" month= "November"/>
</front>
</reference>
<reference anchor= "IETF-BibXML" target=
"http://xml.resource.org/public/rfc/bibxml/\
">
<front>
<title>IETF BibXML Library</title>
<author/>
<date year= "2017" month= "November"/>
</front>
</reference>
<reference anchor= "MathJax" target= "https://www.mathjax.org">
<front>
<title>MathJax: A JavaScript display engine for mathematics
that works in all browsers.</title>
<author/>
<date year= "2017" month= "November"/>
</front>
</reference>
<reference anchor= "NroffEdit" target=
"http://aaa-sec.com/nroffedit/">
<front>
<title>WYSIWYG Internet-Draft Nroff Editor</title>
<author initials= "S." surname= "Santesson" fullname="Stefan
Santesson">
<organization/>
</author>
<date year= "2011" month= "May"/>
</front>
</reference>
<reference anchor= "TeX-LaTeX" target=
"https://www.latex-project.org">
<front>
<title>LaTeX is document preparation software that runs on top of
Donald E. Knuth's TeX typesetting system.</title>
<author/>
<date year= "2017" month= "November"/>
</front>
</reference>
<reference anchor= "asciidoctor-bibliography" target=
"https://github.com/riboseinc/asciidoctor-bibliography/">
<front>
<title>Citations and Bibliography the 'asciidoctor-way'</title>
<author>
<organization>Ribose Inc.</organization>
<address>
<postal>
<street/>
<country>Hong Kong</country>
</postal>
<email>open.source@ribose.com</email>
<uri>https://www.ribose.com</uri>
</address>
</author>
<date year= "2017" month= "November"/>
</front>
</reference>
<reference anchor= "Asciidoctor-Manual" target=
"http://asciidoctor.org/docs/user-manual/">
<front>
<title>Asciidoctor: A fast text processor &amp; publishing
toolchain for converting AsciiDoc to HTML5,
DocBook &amp; more.</title>
<author initials= "D." surname= "Allen" fullname="Dan Allen">
<organization/>
</author>
<author initials= "R." surname= "Waldron" fullname="Ryan Waldron">
<organization/>
</author>
<author initials= "S." surname= "White" fullname="Sarah White">
<organization/>
</author>
<date year= "2017" month= "November"/>
</front>
</reference>
<reference anchor= "asciidoctor-rfc" target=
"https://github.com/riboseinc/asciidoctor-rfc/">
<front>
<title>asciidoctor-rfc lets you write Internet-Drafts and RFCs
in AsciiDoc, the &#8220;asciidoctor-way&#8221;.</title>
<author>
<organization>Ribose Inc.</organization>
<address>
<postal>
<street/>
<country>Hong Kong</country>
</postal>
<email>open.source@ribose.com</email>
<uri>https://www.ribose.com</uri>
</address>
</author>
<date year= "2017" month= "November"/>
</front>
</reference>
<reference anchor= "Asciidoctor" target= "http://asciidoctor.org">
<front>
<title>Asciidoctor: A fast text processor &amp; publishing
toolchain for converting AsciiDoc to HTML5,
DocBook &amp; more.</title>
<author initials= "D." surname= "Allen" fullname="Dan Allen">
<organization/>
</author>
<author initials= "R." surname= "Waldron" fullname="Ryan Waldron">
<organization/>
</author>
<author initials= "S." surname= "White" fullname="Sarah White">
<organization/>
</author>
<date year= "2017" month= "November"/>
</front>
</reference>
<reference anchor= "datatracker-asciirfc-minimal" target=
"https://datatracker.ietf.org/doc/draft-asciirfc-minimal/">
<front>
<title>IETF Datatracker: A Minimal Internet-Draft In
AsciiRFC</title>

<author initials= "J" surname= "Carberry" fullname="Josiah
Carberry">
<organization/>
</author>

<author initials= "T" surname= "Grayson" fullname="Truman Grayson">
<organization/>
</author>

<date month= "April" day= "12" year="2018"/>

<abstract><t>This document provides a template on how to author (or
migrate!) a new Internet-Draft / RFC in AsciiRFC format.  This template
requires usage of the "asciidoctor-rfc" Ruby gem.</t></abstract>

</front>
</reference>
<reference anchor= "datatracker-camelot-holy-grenade" target=
"https://datatracker.ietf.org/doc/draft-camelot-holy-grenade/">
<front>
<title>IETF Datatracker: The Holy Hand Grenade of Antioch</title>

<author initials= "A" surname= "Pendragon" fullname="Arthur Pendragon">
<organization/>
</author>

<date month= "Aprilt" day= "15" year="2018"/>

<abstract><t>The menagerie of beasts and artefacts depicted in RFC8140
may be usefully supplemented by other renowned figures of Internet and
more general lore.  This document extends the menagerie to the seminal
fable of the "Holy Hand Grenade of Antioch", as depicted in the Monty
Python film "Monty Python and the Holy Grail", as well as "Spamalot",
the musical inspired by the movie.  Spamalot  The relevance of the
musical "Spamalot" to Internet lore should be obvious to the reader; but
in case of doubt, see also Section 1 ("What is Spam*?") of
RFC2635.</t></abstract>

</front>
</reference>
<reference anchor= "datatracker-divination-cfapi" target=
"https://datatracker.ietf.org/doc/draft-divination-cfapi/">
<front>
<title>IETF Datatracker: An API For Calendar-Based Fortune Heuristics
Services</title>

<author initials= "G" surname= "Destiny" fullname="Gabriel Destiny">
<organization/>
</author>

<author initials= "C" surname= "Luck" fullname="Charise Luck">
<organization/>
</author>

<date month= "March" day= "22" year="2018"/>

<abstract><t>This document describes a JSON HTTP API for online services
that provide calendar-based fortune heuristics.</t></abstract>

</front>
</reference>
<reference anchor= "draftr" target= "https://ipv.sx/draftr/">
<front>
<title>draftr: an HTML front-end to pandoc2rfc</title>
<author initials= "R." surname= "Barnes" fullname="Richard Barnes">
<organization/>
</author>
<date year= "2017" month= "Nov"/>
</front>
</reference>
<reference anchor= "git-asciirfc-minimal" target=
"https://github.com/riboseinc/rfc-asciirfc-minimal">
<front>
<title>Git repository: A Minimal Internet-Draft In AsciiRFC</title>

<author initials= "J" surname= "Carberry" fullname="Josiah
Carberry">
<organization/>
</author>

<author initials= "T" surname= "Grayson" fullname="Truman Grayson">
<organization/>
</author>

<date month= "March" day= "22" year="2018"/>

<abstract><t>This document provides a template on how to author (or
migrate!) a new Internet-Draft / RFC in AsciiRFC format.  This template
requires usage of the "asciidoctor-rfc" Ruby gem.</t></abstract>

</front>
</reference>
<reference anchor= "git-camelot-holy-grenade" target=
"https://github.com/riboseinc/rfc-camelot-holy-grenade">
<front>
<title>Git repository: The Holy Hand Grenade of Antioch</title>

<author initials= "A" surname= "Pendragon" fullname="Arthur Pendragon">
<organization/>
</author>

<date month= "March" day= "22" year="2018"/>

<abstract><t>The menagerie of beasts and artefacts depicted in RFC8140
may be usefully supplemented by other renowned figures of Internet and
more general lore.  This document extends the menagerie to the seminal
fable of the "Holy Hand Grenade of Antioch", as depicted in the Monty
Python film "Monty Python and the Holy Grail", as well as "Spamalot",
the musical inspired by the movie.  Spamalot  The relevance of the
musical "Spamalot" to Internet lore should be obvious to the reader; but
in case of doubt, see also Section 1 ("What is Spam*?") of
RFC2635.</t></abstract>

</front>
</reference>
<reference anchor= "git-divination-cfapi" target=
"https://github.com/riboseinc/rfc-divination-cfapi">
<front>
<title>Git repository: An API For Calendar-Based Fortune Heuristics
Services</title>

<author initials= "G" surname= "Destiny" fullname="Gabriel Destiny">
<organization/>
</author>

<author initials= "C" surname= "Luck" fullname="Charise Luck">
<organization/>
</author>

<date month= "March" day= "22" year="2018"/>

<abstract><t>This document describes a JSON HTTP API for online services
that provide calendar-based fortune heuristics.</t></abstract>

</front>
</reference>
<reference anchor= "kramdown-rfc2629" target=
"https://github.com/cabo/kramdown-rfc2629">
<front>
<title>kramdown-rfc2629: An RFC2629 (XML2RFC) backend for
Thomas Leitner's kramdown markdown parser</title>
<author initials= "C." surname= "Bormann" fullname="Carsten
Bormann">
<organization/>
</author>
<date year= "2017" month= "Nov"/>
</front>
</reference>
<reference anchor= "lyx2rfc" target=
"https://github.com/nicowilliams/lyx2rfc">
<front>
<title>LyX to I-D/RFC export by way of Lyx export to
XHTML and XSLT conversion to xml2rfc schema</title>
<author initials= "N." surname= "Williams" fullname="Nico Williams">
<organization/>
</author>
<date year= "2014"/>
</front>
</reference>
<reference anchor= "mmark" target= "https://github.com/miekg/mmark">
<front>
<title>Using mmark to create I-Ds and RFCs</title>
<author initials= "R." surname= "Gieben" fullname="R. (Miek)
Gieben">
<organization/>
</author>
<date year= "2015" month= "June"/>
<abstract><t>This document describes an markdown variant called
mmark [mmark] that can be used to create RFC documents.  The
aim of mmark is to make writing document as natural as
possible, while providing a lot of power on how to structure
and layout the document.</t></abstract>
</front>
</reference>
<reference anchor= "pandoc2rfc" target=
"https://github.com/miekg/pandoc2rfc">
<front>
<title>pandoc2rfc: Use pandoc to create XML
suitable for xml2rfc</title>
<author initials= "R." surname= "Gieben" fullname="R. (Miek)
Gieben">
<organization/>
</author>
<date year= "2012"/>
</front>
</reference>
&I-D.asciirfc-minimal;
&I-D.camelot-holy-grenade;
&I-D.divination-cfapi;
&I-D.wu-netmod-yang-xml-doc-conventions;
&RFC2119;
&RFC5385;
&RFC7328;
&RFC7749;
&RFC7763;
&RFC7764;
&RFC7990;
&RFC7996;
&RFC8174;
</references>
<section anchor= "appendix-a" title= "Examples"><section anchor=
"example-1" title="Example 1: &quot;A Minimal Internet-Draft In
AsciiRFC&quot;"><t>This example is available in the following
formats:</t>
<t>
<list style= "symbols">
<t>AsciiRFC <xref target= "git-asciirfc-minimal"/></t>
<t>Internet-Draft <xref target= "I-D.asciirfc-minimal"/></t>
<t>Text, RFC XML, PDF and HTML on the IETF Datatracker
<xref target= "datatracker-asciirfc-minimal"/></t>
</list>
</t>
<section anchor= "example-1-asciirfc" title= "In AsciiRFC">
<figure>
<artwork type= "asciidoc"><![CDATA[
<CODE BEGINS>
= A Minimal Internet-Draft In AsciiRFC
:doctype: internet-draft
:name: draft-asciirfc-minimal-02
:abbrev: AsciiRFC Example
:status: informational
:ipr: trust200902
:submissionType: individual
:area: Internet
:intended-series: full-standard
:revdate: 2018-04-12T00:00:00Z
:fullname: Josiah Stinkney Carberry
:lastname: Carberry
:forename_initials: J. S.
:organization: Brown University
:phone: +1 401 863 1000
:street: Box K, 69 Brown Street
:city: Providence
:code: 02912
:country: United States of America
:uri: https://www.brown.edu
:email: josiah.carberry@ribose.com
:fullname_2: Truman Grayson
:lastname_2: Grayson
:forename_initials_2: T.
:organization_2: Brown University
:phone_2: +1 401 863 1000
:street_2: Box G, 69 Brown Street
:city_2: Providence
:code_2: 02912
:country_2: United States of America
:uri_2: https://www.brown.edu
:email_2: truman.grayson@ribose.com

[abstract]

This document provides a template on how to author (or migrate!)
a new Internet-Draft / RFC in the AsciiRFC format.

This template requires usage of the `asciidoctor-rfc` Ruby gem.

[#introduction]
== Introduction

AsciiRFC <<I-D.ribose-asciirfc>> is an extremely simple way to
author Internet-Drafts and RFCs without needing to manually
craft RFC XML conforming to <<RFC7991>>.

This is a template specifically made for authors to easily
start with creating an Internet-Draft conforming to <<RFC7991>>
and submittable to the IETF datatracker.

[#conventions]
== Terms and Definitions

The key words "*MUST*", "*MUST NOT*", "*REQUIRED*", "*SHALL*",
"*SHALL NOT*", "*SHOULD*", "*SHOULD NOT*", "*RECOMMENDED*",
"*NOT RECOMMENDED*", "*MAY*", and "*OPTIONAL*" in this
document are to be interpreted as described in BCP 14
<<RFC2119>> <<RFC8174>> when, and only when, they appear in
all capitals, as shown here.

This document also refers to the following terms and
definitions:

AsciiRFC::
an AsciiDoc-derived syntax used for authoring RFCs and
Internet-Drafts, as defined in <<I-D.ribose-asciirfc>>.

[#symbols]
== Symbols And Abbreviations

ADRFC::
abbreviated form of AsciiRFC


[#main]
== Main content

This is where you place the main content, and the following
serves as a placeholder for your text.

Subsections are used here for demonstration purposes.

=== Getting started

The AsciiRFC and RFC toolchains *MUST* be available locally to
build this document template.

==== AsciiRFC toolchain

You will need to have:

* Ruby: for running the AsciiRFC toolchain
* `asciidoctor-rfc` gem: for converting AsciiRFC into XML RFC
(v2 or v3)

==== XML RFC toolchain

You will need to have:

* Python: for running `xml2rfc`
* `xml2rfc`: for converting RFC XML (v2 or v3) into TXT
* `idnits`: for submission preflight


=== Referencing external content

* This is a published RFC <<RFC7253>>

* This is an Internet-Draft <<I-D.ribose-asciirfc>>

* This is an external reference <<RNP>>


[#code-snippets]
=== Code snippets

Code snippets should be wrapped with `<CODE BEGINS>` and
`<CODE ENDS>` blocks, as required by the IETF Trust Legal
Provisions (TLP) <<IETF.TLP>> specified in <<RFC5378>>.

[#security]
== Security Considerations

Any security considerations should be placed here.

As described in <<main>> (here's how you refer a local anchor),
local tools have to be installed before the document template
can be built.

Running of these local tools *MAY* produce unintended side
effects that impact security.

[#iana]
== IANA Considerations

This document does not require any action by IANA.

But if it does, such as proposing changes to IANA registries,
please include them here.

// References must be given before appendixes

[bibliography]
== Normative References

//bibliography::norm[]
++++

<reference anchor= 'RFC2119'
target= 'https://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement
Levels</title>
<author initials= 'S.' surname= 'Bradner' fullname='S. Bradner'>
<organization />
</author>
<date year= '1997' month= 'March' />
<abstract>
<t>In many standards track documents several words are
used to signify the requirements in the specification.
These words are often capitalized. This document defines
these words as they should be interpreted in IETF
documents.  This document specifies an Internet Best
Current Practices for the Internet Community, and
requests discussion and suggestions for improvements.
</t>
</abstract>
</front>
<seriesInfo name= 'BCP' value= '14'/>
<seriesInfo name= 'RFC' value= '2119'/>
<seriesInfo name= 'DOI' value= '10.17487/RFC2119'/>
</reference>

<reference anchor= 'RFC7991'
target= 'https://www.rfc-editor.org/info/rfc7991'>
<front>
<title>The &quot;xml2rfc&quot; Version 3 Vocabulary</title>
<author initials= 'P.' surname= 'Hoffman' fullname='P. Hoffman'>
<organization />
</author>
<date year= '2016' month= 'December' />
<abstract>
<t>This document defines the &quot;xml2rfc&quot;
version 3 vocabulary: an XML-based language used for
writing RFCs and Internet-Drafts.  It is heavily derived
from the version 2 vocabulary that is also under
discussion.  This document obsoletes the v2 grammar
described in RFC 7749.</t>
</abstract>
</front>
<seriesInfo name= 'RFC' value= '7991'/>
<seriesInfo name= 'DOI' value= '10.17487/RFC7991'/>
</reference>

<reference anchor= 'RFC8174'
target= 'https://www.rfc-editor.org/info/rfc8174'>
<front>
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119
Key Words</title>
<author initials= 'B.' surname= 'Leiba' fullname='B. Leiba'>
<organization />
</author>
<date year= '2017' month= 'May' />
<abstract>
<t>RFC 2119 specifies common key words that may be
used in protocol specifications.  This document aims to
reduce the ambiguity by clarifying that only UPPERCASE
usage of the key words have the defined special
meanings.</t>
</abstract>
</front>
<seriesInfo name= 'BCP' value= '14'/>
<seriesInfo name= 'RFC' value= '8174'/>
<seriesInfo name= 'DOI' value= '10.17487/RFC8174'/>
</reference>
++++

[bibliography]
== Informative References

//bibliography::info[]
++++

<reference anchor= 'IETF.TLP'
target= 'https://trustee.ietf.org/trust-legal-provisions.html'>
<front>
<title>IETF Trust Legal Provisions (TLP)</title>
<author>
<organization>IETF</organization>
</author>
<date month= 'April' day= '12' year='2018' />
</front>
</reference>

<reference anchor= 'RNP' target= 'https://github.com/riboseinc/rnp/'>
<front>
<title>RNP: A C library approach to OpenPGP</title>
<author>
<organization>Ribose Inc.</organization>
<address>
<postal>
<street>Suite 1111, 1 Pedder Street</street>
<city>Central</city>
<region>Hong Kong</city>
<country>Hong Kong</country>
</postal>
<email>open.source@ribose.com</email>
<uri>https://www.ribose.com</uri>
</address>
</author>
<date day= '31' month= 'March' year='2018'/>
</front>
</reference>

<reference anchor= 'I-D.ribose-asciirfc'>
<front>
<title>
AsciiRFC: Authoring Internet-Drafts And RFCs Using AsciiDoc
</title>
<author initials= "R" surname= "Tse" fullname="Ronald Tse">
<organization/>
</author>
<author initials= "J" surname= "Lau" fullname="Jeffrey Lau">
<organization/>
</author>
<author initials= "N" surname= "Nicholas" fullname="Nick Nicholas">
<organization/>
</author>
<author initials= "P" surname= "Brasolin" fullname="Paolo Brasolin">
<organization/>
</author>
<date month= "March" day= "23" year="2018"/>
<abstract>
<t>This document describes an AsciiDoc syntax
extension called AsciiRFC, designed for authoring IETF
Internet-Drafts and RFCs.  AsciiDoc is a human readable document
markup language which affords more granular control over markup
than comparable schemes such as Markdown.  The AsciiRFC syntax
is designed to allow the author to entirely focus on text,
providing the full power of the resulting RFC XML through the
AsciiDoc language, while abstracting away the need to manually
edit XML, including references.  This document itself was
written and generated into RFC XML v2 (RFC7749) and RFC XML v3
(RFC7991) directly through asciidoctor-rfc, an AsciiRFC
generator.</t>
</abstract>
</front>
<seriesInfo name= "Internet-Draft" value= "draft-ribose-asciirfc-04"/>
<format type= "TXT" target=
"http://www.ietf.org/internet-drafts/draft-ribose-asciirfc-04.txt"/>
</reference>

<reference anchor= "RFC5378"
target="https://www.rfc-editor.org/info/rfc5378">
<front>
<title>Rights Contributors Provide to the IETF Trust</title>
<author initials= "S."
surname="Bradner" fullname="S. Bradner" role="editor">
<organization/>
</author>
<author initials= "J."
surname="Contreras" fullname="J. Contreras" role="editor">
<organization/>
</author>
<date year= "2008" month= "November"/>
<abstract><t>The IETF policies about rights in Contributions
to the IETF are designed to ensure that such Contributions
can be made available to the IETF and Internet communities
while permitting the authors to retain as many rights as
possible. This memo details the IETF policies on rights in
Contributions to the IETF. It also describes the
objectives that the policies are designed to meet. This
memo obsoletes RFCs 3978 and 4748 and, with BCP 79 and
RFC 5377, replaces Section 10 of RFC 2026. This document
specifies an Internet Best Current Practices for the
Internet Community, and requests discussion and
suggestions for improvements.</t></abstract>
</front>
<seriesInfo name= "BCP" value= "78"/>
<seriesInfo name= "RFC" value= "5378"/>
<seriesInfo name= "DOI" value= "10.17487/RFC5378"/>
</reference>

<reference anchor= 'RFC7253'
target= 'https://www.rfc-editor.org/info/rfc7253'>
<front>
<title>The OCB Authenticated-Encryption Algorithm</title>
<author initials= 'T.' surname= 'Krovetz' fullname='T. Krovetz'>
<organization />
</author>
<author initials= 'P.' surname= 'Rogaway' fullname='P. Rogaway'>
<organization />
</author>
<date year= '2014' month= 'May' />
<abstract><t>This document specifies OCB, a shared-key
blockcipher-based encryption scheme that provides
confidentiality and authenticity for plaintexts and
authenticity for associated data.  This document is a product
of the Crypto Forum Research Group (CFRG).</t></abstract>
</front>
<seriesInfo name= 'RFC' value= '7253'/>
<seriesInfo name= 'DOI' value= '10.17487/RFC7253'/>
</reference>
++++


[appendix]
[#appendix-a]
== Examples

=== Example 1

Here's an example of a properly wrapped code snippet in
accordance with rules specified in <<code-snippets>>.

[source,json]
----
<CODE BEGINS>
{
"code": {
"encoding": "ascii",
"type":     "rfc",
"authors":  [ "Josiah Carberry", "Truman Grayson" ]
}
}
<CODE ENDS>
----

[#acknowledgements]
== Acknowledgements

The authors would like to thank their families.

<CODE ENDS>
]]></artwork>
</figure>
</section>
<section anchor= "example-1-xml3" title= "Rendered as RFC XML v3">
<figure>
<artwork type= "xml"><![CDATA[
<CODE BEGINS>
<?xml version= "1.0" encoding= "US-ASCII"?>
<?xml-stylesheet type= "text/xsl" href= "rfc2629.xslt"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc strict= "yes"?>
<?rfc compact= "yes"?>
<?rfc subcompact= "no"?>
<?rfc toc= "yes"?>
<?rfc tocdepth= "4"?>
<?rfc symrefs= "yes"?>
<?rfc sortrefs= "yes"?>
<rfc xmlns:xi= "http://www.w3.org/2001/XInclude" ipr= "trust200902"
submissionType="IETF" prepTime="2018-04-18T03:35:29Z" version="3">
<front>
<title abbrev= "AsciiRFC Example">A Minimal Internet-Draft In
AsciiRFC</title>
<seriesInfo name= "Internet-Draft" status= "informational"
stream="IETF" value="draft-asciirfc-minimal-02"/>
<seriesInfo name= "" status="full-standard"
value="draft-asciirfc-minimal-02"/>
<author fullname= "Josiah Stinkney Carberry" surname= "Carberry"
initials="J. S.">
<organization>Brown University</organization>
<address>
<postal>
<street>Box K, 69 Brown Street</street>
<city>Providence</city>
<code>02912</code>
<country>United States of America</country>
</postal>
<phone>+1 401 863 1000</phone>
<email>josiah.carberry@ribose.com</email>
<uri>https://www.brown.edu</uri>
</address>
</author>
<author fullname= "Truman Grayson" surname= "Grayson" initials="T.">
<organization>Brown University</organization>
<address>
<postal>
<street>Box G, 69 Brown Street</street>
<city>Providence</city>
<code>02912</code>
<country>United States of America</country>
</postal>
<phone>+1 401 863 1000</phone>
<email>truman.grayson@ribose.com</email>
<uri>https://www.brown.edu</uri>
</address>
</author>
<date day= "12" month= "April" year="2018"/>
<area>Internet</area>

<abstract><t>This document provides a template on how to author (or
migrate!)
a new Internet-Draft / RFC in the AsciiRFC format.</t>
<t>This template requires usage of the <tt>asciidoctor-rfc</tt> Ruby
gem.</t></abstract>
</front><middle>
<section anchor= "introduction" numbered=
"false"><name>Introduction</name><t>AsciiRFC <xref target=
"I-D.ribose-asciirfc"/> is an extremely simple way to
author Internet-Drafts and RFCs without needing to manually
craft RFC XML conforming to <xref target= "RFC7991"/>.</t>
<t>This is a template specifically made for authors to easily
start with creating an Internet-Draft conforming to <xref target=
"RFC7991"/>
and submittable to the IETF datatracker.</t></section>
<section anchor= "conventions" numbered= "false"><name>Terms and
Definitions</name><t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST
NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>",
"<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD
NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>",
"<strong>NOT RECOMMENDED</strong>", "<bcp14>MAY</bcp14>", and
"<bcp14>OPTIONAL</bcp14>" in this
document are to be interpreted as described in BCP 14
<xref target= "RFC2119"/> <xref target="RFC8174"/> when, and only when,
they appear in
all capitals, as shown here.</t>
<t>This document also refers to the following terms and
definitions:</t>
<dl>
<dt>AsciiRFC</dt>
<dd>an AsciiDoc-derived syntax used for authoring RFCs and
Internet-Drafts, as defined in <xref target=
"I-D.ribose-asciirfc"/>.</dd>
</dl></section>
<section anchor= "symbols" numbered= "false">
<name>Symbols And Abbreviations</name>
<dl>
<dt>ADRFC</dt>
<dd>abbreviated form of AsciiRFC</dd>
</dl>
</section>
<section anchor= "main" numbered= "false"><name>Main
content</name><t>This is where you place the main content, and the
following
serves as a placeholder for your text.</t>
<t>Subsections are used here for demonstration purposes.</t>
<section anchor= "_getting_started" numbered= "false"><name>Getting
started</name><t>The AsciiRFC and RFC toolchains <bcp14>MUST</bcp14> be
available locally to
build this document template.</t>
<section anchor= "_asciirfc_toolchain" numbered= "false"><name>AsciiRFC
toolchain</name><t>You will need to have:</t>
<ul>
<li>Ruby: for running the AsciiRFC toolchain</li>
<li><tt>asciidoctor-rfc</tt> gem: for converting AsciiRFC into XML RFC
(v2 or v3)</li>
</ul></section>
<section anchor= "_xml_rfc_toolchain" numbered= "false"><name>XML RFC
toolchain</name><t>You will need to have:</t>
<ul>
<li>Python: for running <tt>xml2rfc</tt></li>
<li><tt>xml2rfc</tt>: for converting RFC XML (v2 or v3) into TXT</li>
<li><tt>idnits</tt>: for submission preflight</li>
</ul></section></section>
<section anchor= "_referencing_external_content" numbered= "false">
<name>Referencing external content</name>
<ul>
<li>This is a published RFC <xref target= "RFC7253"/></li>
<li>This is an Internet-Draft <xref target=
"I-D.ribose-asciirfc"/></li>
<li>This is an external reference <xref target= "RNP"/></li>
</ul>
</section>
<section anchor= "code-snippets" numbered= "false">
<name>Code snippets</name>
<t>Code snippets should be wrapped with <tt>&lt;CODE BEGINS&gt;</tt>
and
<tt>&lt;CODE ENDS&gt;</tt> blocks, as required by the IETF Trust Legal
Provisions (TLP) <xref target= "IETF.TLP"/> specified in <xref
target="RFC5378"/>.</t>
</section></section>
<section anchor= "security" numbered= "false"><name>Security
Considerations</name><t>Any security considerations should be placed
here.</t>
<t>As described in <xref target= "main"/> (here&#8217;s how you refer a
local anchor),
local tools have to be installed before the document template
can be built.</t>
<t>Running of these local tools <bcp14>MAY</bcp14> produce unintended
side
effects that impact security.</t></section>
<section anchor= "iana" numbered= "false"><name>IANA
Considerations</name><t>This document does not require any action by
IANA.</t>
<t>But if it does, such as proposing changes to IANA registries,
please include them here.</t></section>
</middle><back>
<references anchor= "_normative_references">
<name>Normative References</name>
<xi:include href=
"https://xml2rfc.tools.ietf.org/public/rfc/bibxml/\
reference.RFC.2119.xml"
parse= "text"/>
<xi:include href=
"https://xml2rfc.tools.ietf.org/public/rfc/bibxml/\
reference.RFC.7991.xml"
parse= "text"/>
<xi:include href=
"https://xml2rfc.tools.ietf.org/public/rfc/bibxml/\
reference.RFC.8174.xml"
parse= "text"/>
</references>
<references anchor= "_informative_references">
<name>Informative References</name>
<reference anchor= "IETF.TLP" target=
"https://trustee.ietf.org/trust-legal-provisions.html">
<front>
<title>IETF Trust Legal Provisions (TLP)</title>
<author>
<organization>IETF</organization>
</author>
<date month= "April" day= "12" year="2018"/>
</front>
</reference>
<reference anchor= "RNP" target= "https://github.com/riboseinc/rnp/">
<front>
<title>RNP: A C library approach to OpenPGP</title>
<author>
<organization>Ribose Inc.</organization>
<address>
<postal>
<street>Suite 1111, 1 Pedder Street</street>
<city>Central</city>
<region>Hong Kong</region>
<country>Hong Kong</country>
</postal>
<email>open.source@ribose.com</email>
<uri>https://www.ribose.com</uri>
</address>
</author>
<date day= "31" month= "March" year="2018"/>
</front>
</reference>
<xi:include href=
"https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/\
/reference.I-D.draft-ribose-asciirfc-04.xml"
parse= "text"/>
<xi:include href=
"https://xml2rfc.tools.ietf.org/public/rfc/bibxml/\
reference.RFC.5378.xml"
parse= "text"/>
<xi:include href=
"https://xml2rfc.tools.ietf.org/public/rfc/bibxml/\
reference.RFC.7253.xml"
parse= "text"/>
</references>
<section anchor= "appendix-a" numbered= "false">
<name>Examples</name>
<section anchor= "_example_1" numbered= "false"><name>Example
1</name><t>Here&#8217;s an example of a properly wrapped code snippet in
accordance with rules specified in <xref target= "code-snippets"/>.</t>
<figure>
<sourcecode type= "json"><![CDATA[
<CODE BEGINS>
{
"code": {
"encoding": "ascii",
"type":     "rfc",
"authors":  [ "Josiah Carberry", "Truman Grayson" ]
}
}
<CODE ENDS>
]]]]><![CDATA[></sourcecode>
</figure></section>
</section>
<section anchor= "acknowledgements" numbered= "false">
<name>Acknowledgements</name>
<t>The authors would like to thank their families.</t>
</section>
</back>
</rfc>
<CODE ENDS>
]]></artwork>
</figure>
</section></section>
<section anchor= "example-2" title= "Example 2: &quot;The Holy Hand
Grenade of Antioch&quot;"><t>This example is available in the following
formats:</t>
<t>
<list style= "symbols">
<t>AsciiRFC <xref target= "git-camelot-holy-grenade"/></t>
<t>Internet-Draft <xref target= "I-D.camelot-holy-grenade"/></t>
<t>Text, RFC XML, PDF and HTML on the IETF Datatracker
<xref target= "datatracker-camelot-holy-grenade"/></t>
</list>
</t>
<section anchor= "example-2-asciirfc" title= "In AsciiRFC">
<figure>
<artwork type= "asciidoc"><![CDATA[
<CODE BEGINS>
= The Holy Hand Grenade of Antioch
Arthur son of Uther Pendragon
:doctype: internet-draft
:abbrev: Hand Grenade of Antioch
:updates: 8140
:submission-type: independent
:name: draft-camelot-holy-grenade-01
:status: informational
:consensus: false
:area: General, Operations and Management
:keyword: rabbits, grenades, antioch, camelot
:ipr: trust200902
:toc-include: true
:sort-refs: true
:revdate: 2018-04-15T00:00:00Z
:fullname: Arthur son of Uther Pendragon
:forename_initials: A.
:lastname: Pendragon
:email: arthur.pendragon@ribose.com
:organization: Camelot
:uri: http://camelot.gov.example
:street: Palace\ Camel Lot 1
:city: Camelot
:region: England
:country: United Kingdom
:comments: yes
:notedraftinprogress: yes
:smart-quotes: false

[.comment]
tag::preamble1[]
// tag::preamble[]

[abstract]
The menagerie of beasts and artefacts depicted in RFC8140
may be usefully supplemented by other renowned figures of
Internet and more general lore. This document extends the
menagerie to the seminal fable of the
"Holy Hand Grenade of Antioch", as depicted in the
Monty Python film "Monty Python and the Holy Grail",
as well as "Spamalot", the musical inspired by the movie.

[NOTE,remove-in-rfc=false]
.Spamalot
The relevance of the musical "Spamalot" to Internet lore should be
obvious to the reader; but in case of doubt, see also
Section 1 ("What is Spam*?") of RFC2635.

// end::preamble[]
[.comment]
end::preamble1[]

[.comment]
tag::sectnums1[]
// tag::sectnums[]

[toc=exclude]
:sectnums!:
== Terminology

The key words "*MUST*", "*MUST NOT*", "*REQUIRED*", "*SHALL*",
"*SHALL NOT*", "*SHOULD*", "*SHOULD NOT*", "*RECOMMENDED*",
"*NOT RECOMMENDED*", "*MAY*", and "*OPTIONAL*" in this document
are to be interpreted as described in BCP 14 <<RFC2119>> <<RFC8174>>
when, and only when, they appear in all capitals, as shown here.

:sectnums:
== Introduction

<<RFC8140>> refers to the intended move of RFC formatting to
XML2RFC v3 <<RFC7990>>, in the following terms:

// end::sectnums[]
[.comment]
end::sectnums1[]

[.comment]
tag::quote1[]
// tag::quote[]

[quote,attribution="A. Farrel"]
____
Although the RFC Editor has recently dragged the IETF kicking and
screaming into the twentieth century [RFC7990] [RFC7996], there is a
yearning among all right-thinking Internet architects to "keep it
simple" and to return to the olden days when pigs could be given
thrust without anyone taking undue offence.
____

// end::quote[]
[.comment]
end::quote1[]

While no pigs, flying or otherwise, are involved in the transition
to RFC XML v3, it is opportune to enhance the <<RFC8140>>
legendarium in the service of RFC XML v3, by illustrating its
functionality through references to the mythology of Camelot, and
particularly the incidents at the Cave of Caerbannog.

[.comment]
tag::escaped_hyperlink1[]
// tag::escaped_hyperlink[]

The screaming move into the twenty-*first* century is accompanied by
a move back to the late twentieth century, with ASCII stylings more
wonted in haunts like \ftp://ftp.wwa.com/pub/Scarecrow (known to be
accessible in 1996.)

// end::escaped_hyperlink[]
[.comment]
end::escaped_hyperlink1[]

There are two references to rabbits in
_Monty Python and the Holy Grail_ which are expounded on herewith:

[.comment]
tag::listcontinuation1[]
// tag::listcontinuation[]

Trojan Rabbit::
In their siege of the French-occupied castle which may already
contain an instance of the Grail, Sir Bedevere the Wise proposes to
use a Trojan Rabbit to infiltrate the castle, with a raiding party
to take the French "not only by surprise, but totally unarmed."
+
The proposal, unsurprisingly, proved abortive. The more so as the
raiding party forgot to hide within the Trojan Rabbit, before the
French soldiers took the Trojan Rabbit inside the castle.

Killer Rabbit of Caerbannog::
Guarding the entrance to the Cave of Caerbannog; see <<caerbannog>>.

// end::listcontinuation[]
[.comment]
end::listcontinuation1[]

== The French-occupied castle

[.comment]
tag::inline_formatting1[]
// tag::inline_formatting[]

The participants of that renowned exercise in cross-cultural
communication, to wit the exchange between the
_Knights of the Round Table_
and the taunting French soldiers serving under *Guy de Lombard* are,
properly speaking, outside the scope of this `menagerie`, being more
or less human. Notwithstanding, several^ish^ beasts both animate~d~
and wooden played a significant part in this encounter; most
notably:

* The Projectile Cow, see <<projectile-cow>>
* The Trojan Rabbit, see <<trojan-rabbit>>

// end::inline_formatting[]
[.comment]
end::inline_formatting1[]


[[projectile-cow]]
.The Projectile Cow with an accompanying cannon
====
[alt=The Projectile Cow with an accompanying cannon in ASCII]
....
.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.--.-.-.-.-.-.-.-.--.-.
_-_---__--__--___-___-__-____---___-________---____-____-__-
._.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--..-.-.-.-.-.-..--.-
,..,.,.,.,.,..,.,,..,.,.,.,.,.,,  ^^  .,,.,.,  ^^   .,.,.,.=
_>-.-.-.-._>_>_>_.-.-.-.-.-.-.-.  \\\  .,.,.  ///  .-.-.-.-.
.,.,.,.,..,.,..,.,.,..,.,.,,..,.,  \ \_______/ /    .,.,.,.,
.,.,.,.,..,.,.,.,..,,..,,.,.,.,.,.  <[ {o} . ]>  #   .,.,.,.
.-.-.--.-.-.-.-.-.--.-.-.-.--.-.-.   [ ______]       .-.-.-.
.-.--.-.-.-.--.-.-.-.--.-.-.,.,.,  / [ !  ` `]   .,.,..,.,.-
.,.,.,.-.-,l,-,l.-,.,.,.,-.,*.    /  {_!MOO!_}    . ., . . ,
.-.-.-.-.-.-.-.-.-.-.-.-.-.-    /M      /    -.-<>.,.,..-.-,
.-.-.--.-.-.-.-.-.-.-.-.--..   /MI    LK\____    .-.-.-.-.-.
.-.-.-.--.-.-.-.-.-.-.-.-.-   /MILK   mil_____k   ,.,.,..-,-
.-,-.-,-.,-.-,-.`-.-/-..     //    -`  //       .-.p . .-.-.
.-.--.-.-.-.-.-.-.-.        //   .,   //    .-.-.-.-.-.-.-.-
.-.-.--.-.-.-.-.-.-.  %____============    .-.-.--.-.-.-.-.-
-.-.-.-.--.-.-.-.-.-.      !  !           .,-.-.-,-,--,-.-,-
,--.-.-,--.--.-.,--,        \ \      .-,-,--.-,--,-.---,-.-,
,-.-.-,-,-.-,-,-.--,         +  >    .-,--,-.--,-,-.-.-,--,-
,--.-,--,-,--.---,-               .-,-,--.--,--,-.---,-,-.-.
.,.,.,.,..,.,.,.{A\      .,.,.,.,..,.,.,.,.,.,..,.,.,.,..,.,
.,.,.,.,.,.,.{GLASS\   .,..,.,.,.,.,..,.,.,.,.,.,.,..,.,.,.,
,..,.,,.,,.,{OF|MILK\..,.,.,.,.,..,.,.,.,.,.,..,.,.,.,.,.,.,
,.,..,.,,.,{ISWORTH},.,.,..,.,.,.,.,..,..,.,.,..,.,.,.,.,.,.
.,.,.,.,.{EVERYTNG}.-.-.--..-.-.-.-.--..--.-.-.-.-.--.-.-.-.
-.-.-.-{FORINFANTS}___--___-_-__-___--*(0~`~.,.,.,.,><><.><>
_-__-_{BUTBETTER}-.-,-,-,-,-,-,-,-,.-^^^^.-.-.-.-.^^^7>>>,..
.._...{WITH_HONEY}-.-.-.-.-.-.-.-.-.-.RANDOM(BUSH)SHRUBS>_..
GRASS_GRASS_GRASS_GRASS_GRASS_SOMEROCKS>GRASS>GRASS<GRASS>PC
SOIL_ROOTS_SOIL_SOIL_ROCKS_SOIL_GRASS_GRASS_GRASS_ROCKS_SOIL
CLAY_ROCKS_PEBBLES_CLAY_CLAY_CLAY_CLAY_GOLD_CLAY_CLAY><_WORM
ROOTS_CLAY_SKELETON_MORESOIL_CLAY_CLAY_CLAY_CLAY_<MUSHROOMS>
....
====

[[trojan-rabbit]]
.The Trojan Rabbit with an automatic sliding door
====
[alt=The Trojan Rabbit with an automatic sliding door, in ASCII]
....
                           ___  ____
                          //_ \//\__\
                            || ||  |
                         -__||_||__|
                       //         \--_
                      //     ____     --___
                     //     //   \         \-_
                    //      \\  @/        o ||
                   //        ----      _____||
                  //                   //
             //\_//__                 //
           //--  --- \____           //
          //          --- \______   //
         //   , .          ----- \_//_
        //       ,.               --- \____
       //              .,v             --- \___
      //                                 __ -- \_
     ||  ,         _______________       //||     |-_
     ||           |   |''''''''''|     // ||     |  |
     ||     '     |   |          |        ||     |  |
     ||           |   |          |        ||     |  |
     ||      "    |   | 0        |     ___||___  |  |
     ||           |   |          |     --------  |  |
     ||___        |   |          |        ______ |  |-
    //     \      |   |          |       //     \| _| \
   //       \ ____|---|__________|______//       \/    |
  ||    X    |      /                  ||    X    |   /
   \\       /\\____/                    \\       /___/
    \\_____/ -----                       \\_____/---
     -----                                -----
....
====

[.comment]
tag::aside1[]
// tag::aside[]

****
While the exchange at the French-occupied castle is one of
the more memorable scenes of _Monty Python and the Holy Grail_,
the Trojan Rabbit has not reached the same level of cultural
resonance as its more murderous counterpart. Reasons for this
may include:

* Less overall screen-time dedicated to the Trojan Rabbit.

* The Trojan Rabbit as projectile has already been anticipated
by the Cow as projectile.
****

// end::aside[]

[.comment]
end::aside1[]

[.comment]
tag::note1[]
// tag::note[]

[NOTE,display=true,source=Author]
====
Image courtesy of
https://camelot.gov.example/creatures-in-ascii/
====

// end::note[]
[.comment]
end::note1[]


[.comment]
tag::comment1[]
// tag::comment[]

The exchange of projectile animals was the beginning of a
long-running fruitful relationship between the British and the
French peoples,
[comment]#TODO: Will need to verify that claim.# which
arguably predates the traditional English enmity with the
French. [comment]#Strictly speaking, the Knights are Welsh.#

[.comment]
--
This document, as it turns out, has a profusion of XML comments.

As expected, they are ignored in any rendering of the document.
--


// end::comment[]
[.comment]
end::comment1[]

[[caerbannog]]
== The Mythos of Caerbannog

[.comment]
tag::xref1[]
// tag::xref[]

The _Cave of Caerbannog_ has been well-established in the mythology
of Camelot (as recounted by Monty Python) as the lair of the
Legendary Black Beast of Arrrghhh, more commonly known today as the
*Killer Rabbit of Caerbannog* <<killer_rabbit_caerbannog>>.
It is the encounter between the Killer Rabbit of Caerbannog and the
Knights of the Round Table, armed with the Holy Hand Grenade of
Antioch (see the <<holy_hand_grenade,following section>>), that we
recount here through monospace font and multiple spaces.

[[killer_rabbit_caerbannog]]
=== The Killer Rabbit of Caerbannog

// end::xref[]
[.comment]
end::xref1[]

[.comment]
tag::relref1[]
// tag::relref[]

The *Killer Rabbit of Caerbannog*, that most formidable foe of
the Knights and of all that is holy or carrot-like, has been
depicted diversely in lay and in song. We venture to say,
_contra_ the claim made in <<RFC8140,4.1 of: Ze Vompyre>>,
that the Killer Rabbit of Caerbannog truly is the most afeared
of all the creatures. Short of sanctified ordnance such as
<<holy_hand_grenade,format=title>>, there are few remedies
known against its awful lapine powers.

// end::relref[]
[.comment]
end::relref1[]

[.comment]
tag::hyperlink1[]
// tag::hyperlink[]

<<killer-bunny,The following depiction>> of the fearsome beast
has been sourced from
http://camelot.gov.example/avatars/rabbit[Rabbit-SCII],
<<killer-source,accompanied>>
by C code that was used in this accurate depiction of the
Killer Rabbit:

// end::hyperlink[]
[.comment]
end::hyperlink1[]

[.comment]
tag::figure1[]
// tag::figure1a[]

[[killer-bunny]]
.A Photo Of The Killer Rabbit of Caerbannog Taken In Secret
====
[alt=The Killer Bunny, in ASCII]
....
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
\\\\\\\\\\\\\\\\\\\\\^^^^^^^^^^^^^^^^^^^^^^\\\\\\\\\\\\\\\\\
\\\\\\\\\\\\\\\\\\\<<#MWSHARPMWMWMWTEETHWMWWM>>>\\\\\\\\\\\\
\\\\\\\\\\\\\\\<<<#WMMWMWDEEPMDARKWCAVEMWWMMWM##>>>>\\\\\\\\
\\\\\\\\\\\\\<<#WMWMWMWMWWM/^MWMWMWMWMWMW^WMWMWMMW#>>>\\\\\\
\\\\\\\\\\\\<<#WMWMBEASTMW// \MWABBITWMW/ \MWMWMWMW##\\\\\\\
\\\\\\\\\\##MWMWMMWMWMWMWM\\  \MWMWMWMW/  /MWMWMWMWM##\\\\\\
\\\\\\\\##WMWMWMWMMWMWMWMWM\\  \MWMWMW/  /MWMWMWMMWMWMWM##\\
\\\\\\\##MWMMRAVENOUSMWMWMWM\\  \====/  /MWMRABBITMWMWMWMW##
\\\\\\##MWMWMWMWMMWMWMWMWMW[[            ]WMWMWMMWMWMWMWMWMW
\\\\\##MWMWMWMWCARNIVOROUSW[[   3    3   ]MWMWTOOMDARKWMWMMW
\\\\##MWMWDARKMWMWMWMWMWMWM//\     o    /MWMWMWMMWMWMWMMWMWM
\\##MWMWMMKILLERABBITWMWMM//| \___vv___/ \WMPITCHWBLACKWMWMW
\##MWMWMWMMWMWMWMWMWMMWMW// |   \-^^-/   |MWMWMWMMWMWMWMWMWM
MWMWMWMMWMWVERYMDARKWMMW//  |            |MWMCAERBANNOGWMWMW
MWMWMWMMWMWMWMWMWMWMWMM{{  /             /MWMWMMWMWMWMWMWMWM
MULTRADARKWMWMHELPMWMWMW\\ \  |      |  |MWMCANMMWMWMWMMWMWW
MWMWMWMWMMWMWMWMWMMWMWMWM\\ | |_     |  |_WMWMMYOUMWMMWWMWMW
MWMMWMWMWMWMBLACKWMWMWMWWM\_|__-\-----\__-\MWMWMWMREADMWMWWM
MWMWMWMMWMWMWMWMMWMWMWWMWMWMWMMWMWMWMWMWMWMWMWMWMWMWMMTHISWW
MWVERYMMSCARYMWMWWMWMMWMWMWMWMWMWMWMWMWMWMWMWWMWMMWMWIWM'.',
MWMWMMWMW======MWMMCANTWSEEMAMTHINGMMWMWMWMWMWMWMBETMMW` . `
MWMWMWM// SKULL \MWMWMWMMWSCREAMMMWMWMWMMWMNOTMWMWMWW  ` . \
MWMWMW|| |X||X| |MWMWCALLMMEWMMWMWMMWMWMWMWWM - ` ~ . , '
MWMWMW||___ O __|MWMWMWMMWMWMWMWMMW'   ___________//   -_^_-
MWMWMW \\||_|_||MWMW      '   . .     <_|_|_||_|__|     \O/
MW   \\/\||v v||  -\\-------___     .   .,         \     |
    \\|  \_CHIN/  ==-(|CARROT/)\>     \\/||//         v\/||/
       )          /--------^-^            ,.            \|//
 #  \(/ .\\|x//                              " ' '
  . ,                \\||//        \||\\\//   \\
....
====

[[killer-source]]
.C Code To Lure Killer Rabbit Back To Cave
====
[source,c]
----
<CODE BEGINS>
/* Locate the Killer Rabbit */
int type;
unsigned char *killerRabbit =
LocateCreature(&caerbannog, "killer rabbit");
if( killerRabbit == 0 ){
puts("The Killer Rabbit of Caerbannog is out of town.");
return LOST_CREATURE;
}

/* Load Cave */
unsigned char *cave = LoadPlace(&caerbannog,
"The Cave Of Caerbannog");
if( cave == 0 ){
puts("The Cave of Caerbannog must have moved.");
return LOST_PLACE;
}

/* Lure the Killer Rabbit back into the Cave */
unsigned char *carrot = allocateObjectInPlace(
carrot("fresh"), cave);
if( carrot == 0 ){
puts("No carrot, no rabbit.");
return LOST_LURE;
}

/* Finally, notify the Killer Rabbit to act */
return notifyCreature(killerRabbit, &carrot);
<CODE ENDS>
----
====


// end::figure1a[]
[.comment]
end::figure1[]

On the beast's encounter with the Knights of the Round Table,
the following personnel engaged with it in combat:

[.comment]
tag::ul1[]
// tag::ul[]

* Killed
** Sir Bors
** Sir Gawain
** Sir Ector
* Soiled Himself
** Sir Robin
* Panicked
** King Arthur
* Employed Ordnance
** The Lector
** Brother Maynard
* Scoffed
** Tim the Enchanter

// end::ul[]
[.comment]
end::ul1[]




[[holy_hand_grenade]]
=== Holy Hand Grenade of Antioch

[.comment]
tag::figure2[]

// tag::figure2a[]

[[hand-grenade-figure]]
.The Holy Hand Grenade of Antioch (don't pull the pin)
====
[alt=Holy Hand Grenade of Antioch, in ASCII]
....
                        ______
                       \\/  \/
                      __\\  /__
                     ||  //\   |
                     ||__\\/ __|
                        ||  |    ,---,
                        ||  |====`\  |
                        ||  |    '---'
                      ,--'*`--,
                    _||#|***|#|
                 _,/.-'#|* *|#`-._
               ,,-'#####|   |#####`-.
             ,,'########|   |########`,
            //##########| o |##########\
           ||###########|   |###########|
          ||############| o |############|
          ||------------'   '------------|
          ||o  o  o  o  o   o  o  o  o  o|
           |-----------------------------|
           ||###########################|
            \\#########################/
             `..#####################,'
               ``..###############_,'
                  ``--.._____..--'
                     `''-----''`
....
====

// end::figure2a[]

[.comment]
end::figure2[]


[[sovereign-orb]]
.The Sovereign's Orb made invisible
====
.Outlines of the Sovereign's Orb
[link=https://camelot.gov.example/sovereigns_orb.jpg,align=right]
image::https://camelot.gov.example/sovereigns_orb.jpg[Orb,124,135]
====

[.comment]
tag::index1[]
// tag::index[]

The solution to the impasse at the ((Cave of Caerbannog)) was
provided by the successful deployment of the
*Holy Hand Grenade of Antioch* (see <<hand-grenade-figure>>)
(((Holy Hand Grenade of Antioch))).
Any similarity between the Holy Hand Grenade of Antioch and the
mythical _Holy Spear of Antioch_ is purely intentional;
(((relics, Christian))) any similarity between the Holy Hand Grenade
of Antioch and the _Sovereign's Orb of the United Kingdom_
(see <<sovereign-orb>>) is putatively fortuitous.
(((relics, monarchic)))

// end::index[]
[.comment]
end::index1[]

[.comment]
tag::dl1[]
// tag::dl[]

Holy Hand Grenade of Antioch::
Ordnance deployed by Brother Maynard under the incantation of a
lector, in order to dispense with the Foes of the Virtuous.
See <<hand-grenade-figure>>.

Holy Spear of Antioch::
A supposed relic of the crucifixion of Jesus Christ, this is one
of at least four claimed instances of the lance that pierced
Christ's side. Its historical significance lies in inspiring
crusaders to continue their siege of Antioch in 1098.

Sovereign's Orb of the United Kingdom::
Part of the Crown Jewels of the United Kingdom, the Sovereign's
Orb is a hollow gold sphere set with jewels and topped with a
cross.  It was made for Charles II in 1661. See <<sovereign-orb>>.

// end::dl[]
[.comment]
end::dl1[]

[.comment]
tag::bcp14_1[]
// tag::bcp14[]

The instructions in the _Book of Armaments_ on the proper deployment
of the Holy Hand Grenade of Antioch [bcp14]#may# be summarized as
follows, although this summary *SHALL NOT* be used as a substitute
for a reading from the Book of Armaments:

// end::bcp14[]
[.comment]
end::bcp14_1[]


[.comment]
tag::ol1[]
// tag::ol[]

. Preamble: St Attila Benediction
. Feast of the People on Sundry Foods
** Lambs
** Sloths
** Carp
** Anchovies
** Orangutangs
** Breakfast Cereals
** Fruit Bats
** _et hoc genus omne_
. Take out the Holy Pin
. The Count
[upperalpha]
.. Count is to Three: no more, no less
.. Not Four
.. Nor Two, except if the count then proceeds to Three
.. Five is Right Out
. Lob the Holy Hand Grenade of Antioch towards the Foe
. The Foe, being naughty in the *LORD's* sight, [bcp14]#shall# snuff it

// end::ol[]
[.comment]
end::ol1[]

This could also be represented in pseudocode as follows:

[.comment]
tag::listcontinuationblock1[]
// tag::listcontinuationblock[]

. Take out the Holy Pin
. The Count
+
----
integer count;
for count := 1 step 1 until 3 do
say(count)
comment Five is Right Out
----
. Lob the Holy Hand Grenade of Antioch towards the Foe
. Foe snuffs it

// end::listcontinuationblock[]
[.comment]
end::listcontinuationblock1[]

== Dramatis Personae

The following human (more-or-less) protagonists were involved
in the two incidents recounted as lore of the Knights of the
Round Table:

[.comment]
tag::table1[]
// tag::table[]

[grid=all,options="footer"]
|===
|French Castle | Cave of Caerbannog

2+|King Arthur
2+|Patsy
2+|Sir Bedevere the Wise
2+|Sir Galahad the Pure
2+|Sir Lancelot the Brave
2+|Sir Robin the Not-quite-so-brave-as-Sir-Lancelot
|French Guard with Outrageous Accent| Tim the Enchanter
|Other French Guards | Brother Maynard
| | The Lector
.3+^|not yet recruited
>|Sir Bors
>|Sir Gawain
>|Sir Ector

|Retinue of sundry knights
|Retinue of sundry more knights than at the French Castle
|===

// end::table[]
[.comment]
end::table1[]

=== Past the Killer Rabbit

Once the Killer Rabbit of Caerbannog (<<killer-bunny>>) had been
dispatched, the Knights of the Round Table uncovered the last
words of Joseph of Arimathea, inscribed on the Cave of Caerbannog
in Aramaic.  While the precise Aramaic wording has not survived,
we trust the following Hebrew subtitles will serve as an
acceptable substitute:

[.comment]
tag::hebrew1[]
// tag::hebrew[]

____
&#x2e;&#1499;&#1488;&#1503; &#1488;&#1493;&#1500;&#1497;
&#1497;&#1502;&#1510;&#1488;&#1493;
&#1492;&#1502;&#1497;&#1500;&#1497;&#1501;
&#1492;&#1488;&#1495;&#1512;&#1493;&#1504;&#1493;&#1514; &#1513;&#1500;
&#1497;&#1493;&#1505;&#1507;
.&#1502;&#1488;&#1512;&#1502;&#1514;&#1497;&#1492;
&#x2e;&#1502;&#1497; &#1488;&#1513;&#1512; &#1497;&#1492;&#1497;&#1492;
&#1488;&#1502;&#1497;&#1509; &#1493;&#1489;&#1506;&#1500;
&#1504;&#1508;&#1513; &#1496;&#1492;&#1493;&#1512;&#1492;
&#1497;&#1493;&#1499;&#1500; &#1500;&#1502;&#1510;&#1493;&#1488;
&#1488;&#1514; &#1492;&#1490;&#1489;&#1497;&#1506;
&#1492;&#1511;&#1491;&#1493;&#1513; &#1489;&#1496;&#1497;&#1512;&#1514;
.&#1488;&#1488;&#1488;&#1488;&#1488;&#1488;&#1488;&#1492;

"Here may be found the last words of Joseph&nbsp;of Arimathea.
He who is valiant and pure of spirit may find the Holy Grail
in the castle of &mdash; Aaaargh."
____

// end::hebrew[]
[.comment]
end::hebrew1[]


== IANA Considerations

IANA might consider a registry to track the mythical, especially
ravaging beasts, such as the Killer Rabbit, who haunt the Internet.


== Security Considerations

Do not let the Killer Rabbit out under any circumstance.

I repeat. Do not let the Killer Rabbit (<<killer-bunny>>) out.


[.comment]
tag::bibliography1[]
// tag::bibliography[]

[bibliography]
== Normative References
++++
<reference anchor= "RFC2119"
target="https://www.rfc-editor.org/info/rfc2119">
<front>
<title>Key words for use in RFCs to Indicate
Requirement Levels</title>
<author initials= "S." surname= "Bradner" fullname="S. Bradner">
<organization/>
</author>
<date year= "1997" month= "March"/>
</front>
<seriesInfo name= "BCP" value= "14"/>
<seriesInfo name= "RFC" value= "2119"/>
<seriesInfo name= "DOI" value= "10.17487/RFC2119"/>
</reference>
++++


[bibliography]
== Informative References
++++

<reference anchor= "grail_film">
<front>
<title>Monty Python and the Holy Grail</title>
<author initials= "G." surname= "Chapman"/>
<author initials= "J." surname= "Cleese"/>
<author initials= "E." surname= "Idle"/>
<author initials= "T." surname= "Gilliam"/>
<author initials= "T." surname= "Jones"/>
<author initials= "M." surname= "Palin"/>
<date year= "1975"/>
</front>
</reference>

<reference anchor= "RFC2635"
target="https://www.rfc-editor.org/info/rfc2635">
<front>
<title>DON'T SPEW A Set of Guidelines for Mass Unsolicited
Mailings and Postings (spam*)</title>
<author initials= "S." surname= "Hambridge" fullname="S. Hambridge">
<organization />
</author>
<author initials= "A." surname= "Lunde" fullname="A. Lunde">
<organization />
</author>
<date year= "1999" month= "June" />
</front>
<seriesInfo name= "FYI" value= "35" />
<seriesInfo name= "RFC" value= "2635" />
<seriesInfo name= "DOI" value= "10.17487/RFC2635" />
</reference>

<reference anchor= "RFC7990"
target="https://www.rfc-editor.org/info/rfc7990">
<front>
<title>RFC Format Framework</title>
<author initials= "H." surname= "Flanagan" fullname="H. Flanagan">
<organization/>
</author>
<date year= "2016" month= "December"/>
</front>
<seriesInfo name= "RFC" value= "7990"/>
<seriesInfo name= "DOI" value= "10.17487/RFC7990"/>
</reference>

<reference anchor= "RFC8140"
target="https://www.rfc-editor.org/info/rfc8140">
<front>
<title>
The Arte of ASCII: Or, An True and Accurate Representation of
an Menagerie of Thynges Fabulous and Wonderful in Ye Forme of
Character
</title>
<author initials= "A." surname= "Farrel" fullname="A. Farrel">
<organization/>
</author>
<date year= "2017" month= "April"/>
</front>
<seriesInfo name= "RFC" value= "8140"/>
<seriesInfo name= "DOI" value= "10.17487/RFC8140"/>
</reference>

<reference anchor= 'RFC8174'
target= 'https://www.rfc-editor.org/info/rfc8174'>
<front>
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key
Words</title>
<author initials= 'B.' surname= 'Leiba' fullname='B. Leiba'>
<organization />
</author>
<date year= '2017' month= 'May' />
<abstract><t>RFC 2119 specifies common key words that may be used
in protocol specifications.  This document aims to reduce
the ambiguity by clarifying that only UPPERCASE usage of the
key words have the defined special meanings.</t></abstract>
</front>
<seriesInfo name= 'BCP' value= '14'/>
<seriesInfo name= 'RFC' value= '8174'/>
<seriesInfo name= 'DOI' value= '10.17487/RFC8174'/>
</reference>

++++

// end::bibliography[]
[.comment]
end::bibliography1[]
<CODE ENDS>
]]></artwork>
</figure>
</section>
<section anchor= "example-2-xml3" title= "Rendered as RFC XML v3">
<figure>
<artwork type= "asciidoc"><![CDATA[
<CODE BEGINS>
<?xml version= "1.0" encoding= "US-ASCII"?>
<?xml-stylesheet type= "text/xsl" href= "rfc2629.xslt"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc comments= "yes"?>
<?rfc notedraftinprogress= "yes"?>
<?rfc strict= "yes"?>
<?rfc compact= "yes"?>
<?rfc subcompact= "no"?>
<?rfc toc= "yes"?>
<?rfc tocdepth= "4"?>
<?rfc symrefs= "yes"?>
<?rfc sortrefs= "true"?>
<rfc xmlns:xi= "http://www.w3.org/2001/XInclude" ipr= "trust200902"
updates="8140" sortRefs="true" tocInclude="true"
submissionType="independent" prepTime="2018-04-18T03:35:33Z"
version="3">
<front>
<title abbrev= "Hand Grenade of Antioch">The Holy Hand Grenade of
Antioch</title>
<seriesInfo name= "Internet-Draft" status= "informational"
stream="independent" value="draft-camelot-holy-grenade-01"/>
<author fullname= "Arthur son of Uther Pendragon" surname= "Pendragon"
initials="A.">
<organization>Camelot</organization>
<address>
<postal>
<street>Palace</street>
<street>Camel Lot 1</street>
<city>Camelot</city>
<region>England</region>
<country>United Kingdom</country>
</postal>
<email>arthur.pendragon@ribose.com</email>
<uri>http://camelot.gov.example</uri>
</address>
</author>
<date day= "15" month= "April" year="2018"/>
<area>General</area>
<area>Operations and Management</area>
<keyword>rabbits</keyword>
<keyword>grenades</keyword>
<keyword>antioch</keyword>
<keyword>camelot</keyword>

<abstract>

<!-- tag::preamble1[] -->


<t>The menagerie of beasts and artefacts depicted in RFC8140
may be usefully supplemented by other renowned figures of
Internet and more general lore. This document extends the
menagerie to the seminal fable of the
"Holy Hand Grenade of Antioch", as depicted in the
Monty Python film "Monty Python and the Holy Grail",
as well as "Spamalot", the musical inspired by the
movie.</t></abstract><note removeInRFC= "false">
<name>Spamalot</name>
<t>The relevance of the musical "Spamalot" to Internet lore should be
obvious to the reader; but in case of doubt, see also
Section 1 ("What is Spam*?") of RFC2635.</t>
</note>


<!-- end::preamble1[] -->




<!-- tag::sectnums1[] -->


</front><middle>
<section anchor= "_terminology" toc= "exclude" numbered="false">
<name>Terminology</name>
<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>",
"<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>",
"<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD
NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>",
"<strong>NOT RECOMMENDED</strong>", "<bcp14>MAY</bcp14>", and
"<bcp14>OPTIONAL</bcp14>" in this document
are to be interpreted as described in BCP 14 <xref target= "RFC2119"/>
<xref target="RFC8174"/>
when, and only when, they appear in all capitals, as shown here.</t>
</section>
<section anchor= "_introduction" numbered=
"true"><name>Introduction</name><t><xref target= "RFC8140"/> refers to
the intended move of RFC formatting to
XML2RFC v3 <xref target= "RFC7990"/>, in the following terms:</t>


<!-- end::sectnums1[] -->




<!-- tag::quote1[] -->


<blockquote quotedFrom= "A. Farrel">
<t>Although the RFC Editor has recently dragged the IETF kicking and
screaming into the twentieth century [RFC7990] [RFC7996], there is a
yearning among all right-thinking Internet architects to "keep it
simple" and to return to the olden days when pigs could be given
thrust without anyone taking undue offence.</t>
</blockquote>


<!-- end::quote1[] -->


<t>While no pigs, flying or otherwise, are involved in the transition
to RFC XML v3, it is opportune to enhance the <xref target= "RFC8140"/>
legendarium in the service of RFC XML v3, by illustrating its
functionality through references to the mythology of Camelot, and
particularly the incidents at the Cave of Caerbannog.</t>


<!-- tag::escaped_hyperlink1[] -->


<t>The screaming move into the twenty-<strong>first</strong> century is
accompanied by
a move back to the late twentieth century, with ASCII stylings more
wonted in haunts like ftp://ftp.wwa.com/pub/Scarecrow (known to be
accessible in 1996.)</t>


<!-- end::escaped_hyperlink1[] -->


<t>There are two references to rabbits in
<em>Monty Python and the Holy Grail</em> which are expounded on
herewith:</t>


<!-- tag::listcontinuation1[] -->


<dl>
<dt>Trojan Rabbit</dt>
<dd>
<t>In their siege of the French-occupied castle which may already
contain an instance of the Grail, Sir Bedevere the Wise proposes to
use a Trojan Rabbit to infiltrate the castle, with a raiding party
to take the French "not only by surprise, but totally unarmed."</t>
<t>The proposal, unsurprisingly, proved abortive. The more so as the
raiding party forgot to hide within the Trojan Rabbit, before the
French soldiers took the Trojan Rabbit inside the castle.</t>
</dd>
<dt>Killer Rabbit of Caerbannog</dt>
<dd>Guarding the entrance to the Cave of Caerbannog; see <xref target=
"caerbannog"/>.</dd>
</dl>


<!-- end::listcontinuation1[] -->

</section>
<section anchor= "_the_french_occupied_castle" numbered=
"true"><name>The French-occupied castle</name>

<!-- tag::inline_formatting1[] -->


<t>The participants of that renowned exercise in cross-cultural
communication, to wit the exchange between the
<em>Knights of the Round Table</em>
and the taunting French soldiers serving under <strong>Guy de
Lombard</strong> are,
properly speaking, outside the scope of this <tt>menagerie</tt>, being
more
or less human. Notwithstanding, several<sup>ish</sup> beasts both
animate<sub>d</sub>
and wooden played a significant part in this encounter; most
notably:</t>
<ul>
<li>The Projectile Cow, see <xref target= "projectile-cow"/></li>
<li>The Trojan Rabbit, see <xref target= "trojan-rabbit"/></li>
</ul>


<!-- end::inline_formatting1[] -->


<figure anchor= "projectile-cow">
<name>The Projectile Cow with an accompanying cannon</name>
<artwork type= "ascii-art" alt= "The Projectile Cow with an
accompanying cannon in ASCII"><![CDATA[
.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.--.-.-.-.-.-.-.-.--.-.
_-_---__--__--___-___-__-____---___-________---____-____-__-
._.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--..-.-.-.-.-.-..--.-
,..,.,.,.,.,..,.,,..,.,.,.,.,.,,  ^^  .,,.,.,  ^^   .,.,.,.=
_>-.-.-.-._>_>_>_.-.-.-.-.-.-.-.  \\\  .,.,.  ///  .-.-.-.-.
.,.,.,.,..,.,..,.,.,..,.,.,,..,.,  \ \_______/ /    .,.,.,.,
.,.,.,.,..,.,.,.,..,,..,,.,.,.,.,.  <[ {o} . ]>  #   .,.,.,.
.-.-.--.-.-.-.-.-.--.-.-.-.--.-.-.   [ ______]       .-.-.-.
.-.--.-.-.-.--.-.-.-.--.-.-.,.,.,  / [ !  ` `]   .,.,..,.,.-
.,.,.,.-.-,l,-,l.-,.,.,.,-.,*.    /  {_!MOO!_}    . ., . . ,
.-.-.-.-.-.-.-.-.-.-.-.-.-.-    /M      /    -.-<>.,.,..-.-,
.-.-.--.-.-.-.-.-.-.-.-.--..   /MI    LK\____    .-.-.-.-.-.
.-.-.-.--.-.-.-.-.-.-.-.-.-   /MILK   mil_____k   ,.,.,..-,-
.-,-.-,-.,-.-,-.`-.-/-..     //    -`  //       .-.p . .-.-.
.-.--.-.-.-.-.-.-.-.        //   .,   //    .-.-.-.-.-.-.-.-
.-.-.--.-.-.-.-.-.-.  %____============    .-.-.--.-.-.-.-.-
-.-.-.-.--.-.-.-.-.-.      !  !           .,-.-.-,-,--,-.-,-
,--.-.-,--.--.-.,--,        \ \      .-,-,--.-,--,-.---,-.-,
,-.-.-,-,-.-,-,-.--,         +  >    .-,--,-.--,-,-.-.-,--,-
,--.-,--,-,--.---,-               .-,-,--.--,--,-.---,-,-.-.
.,.,.,.,..,.,.,.{A\      .,.,.,.,..,.,.,.,.,.,..,.,.,.,..,.,
.,.,.,.,.,.,.{GLASS\   .,..,.,.,.,.,..,.,.,.,.,.,.,..,.,.,.,
,..,.,,.,,.,{OF|MILK\..,.,.,.,.,..,.,.,.,.,.,..,.,.,.,.,.,.,
,.,..,.,,.,{ISWORTH},.,.,..,.,.,.,.,..,..,.,.,..,.,.,.,.,.,.
.,.,.,.,.{EVERYTNG}.-.-.--..-.-.-.-.--..--.-.-.-.-.--.-.-.-.
-.-.-.-{FORINFANTS}___--___-_-__-___--*(0~`~.,.,.,.,><><.><>
_-__-_{BUTBETTER}-.-,-,-,-,-,-,-,-,.-^^^^.-.-.-.-.^^^7>>>,..
.._...{WITH_HONEY}-.-.-.-.-.-.-.-.-.-.RANDOM(BUSH)SHRUBS>_..
GRASS_GRASS_GRASS_GRASS_GRASS_SOMEROCKS>GRASS>GRASS<GRASS>PC
SOIL_ROOTS_SOIL_SOIL_ROCKS_SOIL_GRASS_GRASS_GRASS_ROCKS_SOIL
CLAY_ROCKS_PEBBLES_CLAY_CLAY_CLAY_CLAY_GOLD_CLAY_CLAY><_WORM
ROOTS_CLAY_SKELETON_MORESOIL_CLAY_CLAY_CLAY_CLAY_<MUSHROOMS>
]]]]><![CDATA[></artwork>
</figure>
<figure anchor= "trojan-rabbit">
<name>The Trojan Rabbit with an automatic sliding door</name>
<artwork type= "ascii-art" alt= "The Trojan Rabbit with an automatic
sliding door"><![CDATA[
                           ___  ____
                          //_ \//\__\
                            || ||  |
                         -__||_||__|
                       //         \--_
                      //     ____     --___
                     //     //   \         \-_
                    //      \\  @/        o ||
                   //        ----      _____||
                  //                   //
             //\_//__                 //
           //--  --- \____           //
          //          --- \______   //
         //   , .          ----- \_//_
        //       ,.               --- \____
       //              .,v             --- \___
      //                                 __ -- \_
     ||  ,         _______________       //||     |-_
     ||           |   |''''''''''|     // ||     |  |
     ||     '     |   |          |        ||     |  |
     ||           |   |          |        ||     |  |
     ||      "    |   | 0        |     ___||___  |  |
     ||           |   |          |     --------  |  |
     ||___        |   |          |        ______ |  |-
    //     \      |   |          |       //     \| _| \
   //       \ ____|---|__________|______//       \/    |
  ||    X    |      /                  ||    X    |   /
   \\       /\\____/                    \\       /___/
    \\_____/ -----                       \\_____/---
     -----                                -----
]]]]><![CDATA[></artwork>
</figure>


<!-- tag::aside1[] -->


<aside><t>While the exchange at the French-occupied castle is one of
the more memorable scenes of <em>Monty Python and the Holy Grail</em>,
the Trojan Rabbit has not reached the same level of cultural
resonance as its more murderous counterpart. Reasons for this
may include:</t>
<ul>
<li>Less overall screen-time dedicated to the Trojan Rabbit.</li>
<li>The Trojan Rabbit as projectile has already been anticipated
by the Cow as projectile.</li>
</ul></aside>


<!-- end::aside1[] -->




<!-- tag::note1[] -->


<t><cref display= "true" source= "Author">Image courtesy of
<eref target=
"https://camelot.gov.example/creatures-in-ascii/"/></cref></t>


<!-- end::note1[] -->




<!-- tag::comment1[] -->


<t>The exchange of projectile animals was the beginning of a
long-running fruitful relationship between the British and the
French peoples,


<!-- TODO: Will need to verify that claim. -->

which
arguably predates the traditional English enmity with the
French.

<!-- Strictly speaking, the Knights are Welsh. -->

</t>


<!-- This document, as it turns out, has a profusion of XML comments.

As expected, they are ignored in any rendering of the document.
-->




<!-- end::comment1[] -->

</section>
<section anchor= "caerbannog" numbered= "true"><name>The Mythos of
Caerbannog</name>

<!-- tag::xref1[] -->


<t>The <em>Cave of Caerbannog</em> has been well-established in the
mythology
of Camelot (as recounted by Monty Python) as the lair of the
Legendary Black Beast of Arrrghhh, more commonly known today as the
<strong>Killer Rabbit of Caerbannog</strong> <xref target=
"killer_rabbit_caerbannog"/>.
It is the encounter between the Killer Rabbit of Caerbannog and the
Knights of the Round Table, armed with the Holy Hand Grenade of
Antioch (see the <xref target= "holy_hand_grenade">following
section</xref>), that we
recount here through monospace font and multiple spaces.</t>
<section anchor= "killer_rabbit_caerbannog" numbered= "true"><name>The
Killer Rabbit of Caerbannog</name>

<!-- end::xref1[] -->




<!-- tag::relref1[] -->


<t>The <strong>Killer Rabbit of Caerbannog</strong>, that most
formidable foe of
the Knights and of all that is holy or carrot-like, has been
depicted diversely in lay and in song. We venture to say,
<em>contra</em> the claim made in <relref section= "4.1" displayFormat=
"of" target="RFC8140">Ze Vompyre</relref>,
that the Killer Rabbit of Caerbannog truly is the most afeared
of all the creatures. Short of sanctified ordnance such as
<xref format= "title" target= "holy_hand_grenade"/>, there are few
remedies
known against its awful lapine powers.</t>


<!-- end::relref1[] -->




<!-- tag::hyperlink1[] -->


<t><xref target= "killer-bunny">The following depiction</xref> of the
fearsome beast
has been sourced from
<eref target=
"http://camelot.gov.example/avatars/rabbit">Rabbit-SCII</eref>,
<xref target= "killer-source">accompanied</xref>
by C code that was used in this accurate depiction of the
Killer Rabbit:</t>


<!-- end::hyperlink1[] -->




<!-- tag::figure1[] -->


<figure anchor= "killer-bunny">
<name>A Photo Of The Killer Rabbit of Caerbannog Taken In
Secret</name>
<artwork type= "ascii-art" alt= "The Killer Bunny"><![CDATA[
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
\\\\\\\\\\\\\\\\\\\\\^^^^^^^^^^^^^^^^^^^^^^\\\\\\\\\\\\\\\\\
\\\\\\\\\\\\\\\\\\\<<#MWSHARPMWMWMWTEETHWMWWM>>>\\\\\\\\\\\\
\\\\\\\\\\\\\\\<<<#WMMWMWDEEPMDARKWCAVEMWWMMWM##>>>>\\\\\\\\
\\\\\\\\\\\\\<<#WMWMWMWMWWM/^MWMWMWMWMWMW^WMWMWMMW#>>>\\\\\\
\\\\\\\\\\\\<<#WMWMBEASTMW// \MWABBITWMW/ \MWMWMWMW##\\\\\\\
\\\\\\\\\\##MWMWMMWMWMWMWM\\  \MWMWMWMW/  /MWMWMWMWM##\\\\\\
\\\\\\\\##WMWMWMWMMWMWMWMWM\\  \MWMWMW/  /MWMWMWMMWMWMWM##\\
\\\\\\\##MWMMRAVENOUSMWMWMWM\\  \====/  /MWMRABBITMWMWMWMW##
\\\\\\##MWMWMWMWMMWMWMWMWMW[[            ]WMWMWMMWMWMWMWMWMW
\\\\\##MWMWMWMWCARNIVOROUSW[[   3    3   ]MWMWTOOMDARKWMWMMW
\\\\##MWMWDARKMWMWMWMWMWMWM//\     o    /MWMWMWMMWMWMWMMWMWM
\\##MWMWMMKILLERABBITWMWMM//| \___vv___/ \WMPITCHWBLACKWMWMW
\##MWMWMWMMWMWMWMWMWMMWMW// |   \-^^-/   |MWMWMWMMWMWMWMWMWM
MWMWMWMMWMWVERYMDARKWMMW//  |            |MWMCAERBANNOGWMWMW
MWMWMWMMWMWMWMWMWMWMWMM{{  /             /MWMWMMWMWMWMWMWMWM
MULTRADARKWMWMHELPMWMWMW\\ \  |      |  |MWMCANMMWMWMWMMWMWW
MWMWMWMWMMWMWMWMWMMWMWMWM\\ | |_     |  |_WMWMMYOUMWMMWWMWMW
MWMMWMWMWMWMBLACKWMWMWMWWM\_|__-\-----\__-\MWMWMWMREADMWMWWM
MWMWMWMMWMWMWMWMMWMWMWWMWMWMWMMWMWMWMWMWMWMWMWMWMWMWMMTHISWW
MWVERYMMSCARYMWMWWMWMMWMWMWMWMWMWMWMWMWMWMWMWWMWMMWMWIWM'.',
MWMWMMWMW======MWMMCANTWSEEMAMTHINGMMWMWMWMWMWMWMBETMMW` . `
MWMWMWM// SKULL \MWMWMWMMWSCREAMMMWMWMWMMWMNOTMWMWMWW  ` . \
MWMWMW|| |X||X| |MWMWCALLMMEWMMWMWMMWMWMWMWWM - ` ~ . , '
MWMWMW||___ O __|MWMWMWMMWMWMWMWMMW'   ___________//   -_^_-
MWMWMW \\||_|_||MWMW      '   . .     <_|_|_||_|__|     \O/
MW   \\/\||v v||  -\\-------___     .   .,         \     |
    \\|  \_CHIN/  ==-(|CARROT/)\>     \\/||//         v\/||/
       )          /--------^-^            ,.            \|//
 #  \(/ .\\|x//                              " ' '
  . ,                \\||//        \||\\\//   \\
]]]]><![CDATA[></artwork>
</figure>
<figure anchor= "killer-source">
<name>C Code To Lure Killer Rabbit Back To Cave</name>
<sourcecode type= "c"><![CDATA[
<CODE BEGINS>
/* Locate the Killer Rabbit */
int type;
unsigned char *killerRabbit =
LocateCreature(&caerbannog, "killer rabbit");
if( killerRabbit == 0 ){
puts("The Killer Rabbit of Caerbannog is out of town.");
return LOST_CREATURE;
}

/* Load Cave */
unsigned char *cave = LoadPlace(&caerbannog,
"The Cave Of Caerbannog");
if( cave == 0 ){
puts("The Cave of Caerbannog must have moved.");
return LOST_PLACE;
}

/* Lure the Killer Rabbit back into the Cave */
unsigned char *carrot = allocateObjectInPlace(
carrot("fresh"), cave);
if( carrot == 0 ){
puts("No carrot, no rabbit.");
return LOST_LURE;
}

/* Finally, notify the Killer Rabbit to act */
return notifyCreature(killerRabbit, &carrot);
<CODE ENDS>
]]]]><![CDATA[></sourcecode>
</figure>


<!-- end::figure1[] -->


<t>On the beast's encounter with the Knights of the Round Table,
the following personnel engaged with it in combat:</t>


<!-- tag::ul1[] -->


<ul>
<li>
<t>Killed</t>
<ul>
<li>Sir Bors</li>
<li>Sir Gawain</li>
<li>Sir Ector</li>
</ul>
</li>
<li>
<t>Soiled Himself</t>
<ul>
<li>Sir Robin</li>
</ul>
</li>
<li>
<t>Panicked</t>
<ul>
<li>King Arthur</li>
</ul>
</li>
<li>
<t>Employed Ordnance</t>
<ul>
<li>The Lector</li>
<li>Brother Maynard</li>
</ul>
</li>
<li>
<t>Scoffed</t>
<ul>
<li>Tim the Enchanter</li>
</ul>
</li>
</ul>


<!-- end::ul1[] -->

</section>
<section anchor= "holy_hand_grenade" numbered= "true"><name>Holy Hand
Grenade of Antioch</name>

<!-- tag::figure2[] -->


<figure anchor= "hand-grenade-figure">
<name>The Holy Hand Grenade of Antioch (don't pull the pin)</name>
<artwork type= "ascii-art" alt= "Holy Hand Grenade of
Antioch"><![CDATA[
                        ______
                       \\/  \/
                      __\\  /__
                     ||  //\   |
                     ||__\\/ __|
                        ||  |    ,---,
                        ||  |====`\  |
                        ||  |    '---'
                      ,--'*`--,
                    _||#|***|#|
                 _,/.-'#|* *|#`-._
               ,,-'#####|   |#####`-.
             ,,'########|   |########`,
            //##########| o |##########\
           ||###########|   |###########|
          ||############| o |############|
          ||------------'   '------------|
          ||o  o  o  o  o   o  o  o  o  o|
           |-----------------------------|
           ||###########################|
            \\#########################/
             `..#####################,'
               ``..###############_,'
                  ``--.._____..--'
                     `''-----''`
]]]]><![CDATA[></artwork>
</figure>


<!-- end::figure2[] -->


<figure anchor= "sovereign-orb">
<name>The Sovereign's Orb made invisible</name>
<artwork align= "right" alt= "Orb" height="135" name="Outlines of the
Sovereign's Orb" src="https://camelot.gov.example/sovereigns_orb.jpg"
type="binary-art" width="124"/>
</figure>


<!-- tag::index1[] -->


<t>The solution to the impasse at the Cave of Caerbannog<iref item=
"Cave of Caerbannog"/> was
provided by the successful deployment of the
<strong>Holy Hand Grenade of Antioch</strong> (see <xref target=
"hand-grenade-figure"/>)
<iref item= "Holy Hand Grenade of Antioch"/>.
Any similarity between the Holy Hand Grenade of Antioch and the
mythical <em>Holy Spear of Antioch</em> is purely intentional;
<iref item= "relics" subitem= "Christian"/> any similarity between the
Holy Hand Grenade
of Antioch and the <em>Sovereign's Orb of the United Kingdom</em>
(see <xref target= "sovereign-orb"/>) is putatively fortuitous.
<iref item= "relics" subitem= "monarchic"/></t>


<!-- end::index1[] -->




<!-- tag::dl1[] -->


<dl>
<dt>Holy Hand Grenade of Antioch</dt>
<dd>Ordnance deployed by Brother Maynard under the incantation of a
lector, in order to dispense with the Foes of the Virtuous.
See <xref target= "hand-grenade-figure"/>.</dd>
<dt>Holy Spear of Antioch</dt>
<dd>A supposed relic of the crucifixion of Jesus Christ, this is one
of at least four claimed instances of the lance that pierced
Christ's side. Its historical significance lies in inspiring
crusaders to continue their siege of Antioch in 1098.</dd>
<dt>Sovereign's Orb of the United Kingdom</dt>
<dd>Part of the Crown Jewels of the United Kingdom, the Sovereign's
Orb is a hollow gold sphere set with jewels and topped with a
cross.  It was made for Charles II in 1661. See <xref target=
"sovereign-orb"/>.</dd>
</dl>


<!-- end::dl1[] -->




<!-- tag::bcp14_1[] -->


<t>The instructions in the <em>Book of Armaments</em> on the proper
deployment
of the Holy Hand Grenade of Antioch <bcp14>MAY</bcp14> be summarized as
follows, although this summary <bcp14>SHALL NOT</bcp14> be used as a
substitute
for a reading from the Book of Armaments:</t>


<!-- end::bcp14_1[] -->




<!-- tag::ol1[] -->


<ol type= "1">
<li>Preamble: St Attila Benediction</li>
<li>
<t>Feast of the People on Sundry Foods</t>
<ul>
<li>Lambs</li>
<li>Sloths</li>
<li>Carp</li>
<li>Anchovies</li>
<li>Orangutangs</li>
<li>Breakfast Cereals</li>
<li>Fruit Bats</li>
<li>
<em>et hoc genus omne</em>
</li>
</ul>
</li>
<li>Take out the Holy Pin</li>
<li>
<t>The Count</t>
<ol type= "A">
<li>Count is to Three: no more, no less</li>
<li>Not Four</li>
<li>Nor Two, except if the count then proceeds to Three</li>
<li>Five is Right Out</li>
</ol>
</li>
<li>Lob the Holy Hand Grenade of Antioch towards the Foe</li>
<li>The Foe, being naughty in the <strong>LORD's</strong> sight,
<bcp14>SHALL</bcp14> snuff it</li>
</ol>


<!-- end::ol1[] -->


<t>This could also be represented in pseudocode as follows:</t>


<!-- tag::listcontinuationblock1[] -->


<ol type= "1">
<li>Take out the Holy Pin</li>
<li>
<t>The Count</t>
<figure>
<sourcecode><![CDATA[
integer count;
for count := 1 step 1 until 3 do
say(count)
comment Five is Right Out
]]]]><![CDATA[></sourcecode>
</figure>
</li>
<li>Lob the Holy Hand Grenade of Antioch towards the Foe</li>
<li>Foe snuffs it</li>
</ol>


<!-- end::listcontinuationblock1[] -->

</section></section>
<section anchor= "_dramatis_personae" numbered= "true"><name>Dramatis
Personae</name><t>The following human (more-or-less) protagonists were
involved
in the two incidents recounted as lore of the Knights of the
Round Table:</t>


<!-- tag::table1[] -->


<table>
<thead>
<tr>
<th align= "left">French Castle</th>
<th align= "left">Cave of Caerbannog</th>
</tr>
</thead>
<tbody>
<tr>
<td colspan= "2" align= "left">King Arthur</td>
</tr>
<tr>
<td colspan= "2" align= "left">Patsy</td>
</tr>
<tr>
<td colspan= "2" align= "left">Sir Bedevere the Wise</td>
</tr>
<tr>
<td colspan= "2" align= "left">Sir Galahad the Pure</td>
</tr>
<tr>
<td colspan= "2" align= "left">Sir Lancelot the Brave</td>
</tr>
<tr>
<td colspan= "2" align= "left">Sir Robin the
Not-quite-so-brave-as-Sir-Lancelot</td>
</tr>
<tr>
<td align= "left">French Guard with Outrageous Accent</td>
<td align= "left">Tim the Enchanter</td>
</tr>
<tr>
<td align= "left">Other French Guards</td>
<td align= "left">Brother Maynard</td>
</tr>
<tr>
<td align= "left"/>
<td align= "left">The Lector</td>
</tr>
<tr>
<td rowspan= "3" align= "center">not yet recruited</td>
<td align= "right">Sir Bors</td>
</tr>
<tr>
<td align= "right">Sir Gawain</td>
</tr>
<tr>
<td align= "right">Sir Ector</td>
</tr>
</tbody>
<tfoot>
<tr>
<td align= "left">Retinue of sundry knights</td>
<td align= "left">Retinue of sundry more knights than at the
French Castle</td>
</tr>
</tfoot>
</table>


<!-- end::table1[] -->


<section anchor= "_past_the_killer_rabbit" numbered= "true"><name>Past
the Killer Rabbit</name><t>Once the Killer Rabbit of Caerbannog (<xref
target= "killer-bunny"/>) had been
dispatched, the Knights of the Round Table uncovered the last
words of Joseph of Arimathea, inscribed on the Cave of Caerbannog
in Aramaic.  While the precise Aramaic wording has not survived,
we trust the following Hebrew subtitles will serve as an
acceptable substitute:</t>


<!-- tag::hebrew1[] -->


<blockquote><t>&#1499;&#1488;&#1503; &#1488;&#1493;&#1500;&#1497;
&#1497;&#1502;&#1510;&#1488;&#1493;
&#1492;&#1502;&#1497;&#1500;&#1497;&#1501;
&#1492;&#1488;&#1495;&#1512;&#1493;&#1504;&#1493;&#1514; &#1513;&#1500;
&#1497;&#1493;&#1505;&#1507;
.&#1502;&#1488;&#1512;&#1502;&#1514;&#1497;&#1492;
&#1502;&#1497; &#1488;&#1513;&#1512; &#1497;&#1492;&#1497;&#1492;
&#1488;&#1502;&#1497;&#1509; &#1493;&#1489;&#1506;&#1500;
&#1504;&#1508;&#1513; &#1496;&#1492;&#1493;&#1512;&#1492;
&#1497;&#1493;&#1499;&#1500; &#1500;&#1502;&#1510;&#1493;&#1488;
&#1488;&#1514; &#1492;&#1490;&#1489;&#1497;&#1506;
&#1492;&#1511;&#1491;&#1493;&#1513; &#1489;&#1496;&#1497;&#1512;&#1514;
.&#1488;&#1488;&#1488;&#1488;&#1488;&#1488;&#1488;&#1492;</t>
<t>"Here may be found the last words of Joseph&#160;of Arimathea.
He who is valiant and pure of spirit may find the Holy Grail
in the castle of &#8212; Aaaargh."</t></blockquote>


<!-- end::hebrew1[] -->

</section></section>
<section anchor= "_iana_considerations" numbered= "true">
<name>IANA Considerations</name>
<t>IANA might consider a registry to track the mythical, especially
ravaging beasts, such as the Killer Rabbit, who haunt the Internet.</t>
</section>
<section anchor= "_security_considerations" numbered=
"true"><name>Security Considerations</name><t>Do not let the Killer
Rabbit out under any circumstance.</t>
<t>I repeat. Do not let the Killer Rabbit (<xref target=
"killer-bunny"/>) out.</t>


<!-- tag::bibliography1[] -->

</section>
</middle><back>
<references anchor= "_normative_references">
<name>Normative References</name>
<xi:include href=
"https://xml2rfc.tools.ietf.org/public/rfc/bibxml/\
reference.RFC.2119.xml"
parse= "text"/>
</references>
<references anchor= "_informative_references">
<name>Informative References</name>
<reference anchor= "grail_film">
<front>
<title>Monty Python and the Holy Grail</title>
<author initials= "G." surname= "Chapman"/>
<author initials= "J." surname= "Cleese"/>
<author initials= "E." surname= "Idle"/>
<author initials= "T." surname= "Gilliam"/>
<author initials= "T." surname= "Jones"/>
<author initials= "M." surname= "Palin"/>
<date year= "1975"/>
</front>
</reference>
<xi:include href=
"https://xml2rfc.tools.ietf.org/public/rfc/bibxml/\
reference.RFC.2635.xml"
parse= "text"/>
<xi:include href=
"https://xml2rfc.tools.ietf.org/public/rfc/bibxml/\
reference.RFC.7990.xml"
parse= "text"/>
<xi:include href=
"https://xml2rfc.tools.ietf.org/public/rfc/bibxml/\
reference.RFC.8140.xml"
parse= "text"/>
<xi:include href=
"https://xml2rfc.tools.ietf.org/public/rfc/bibxml/\
reference.RFC.8174.xml"
parse= "text"/>
</references>
</back>
</rfc>
<CODE ENDS>
]]></artwork>
</figure>
</section></section>
<section anchor= "example-3" title= "Example 3: &quot;An API For
Calendar-Based Fortune Heuristics Services&quot; in AsciiRFC"><t>This
example is available in the following formats:</t>
<t>
<list style= "symbols">
<t>AsciiRFC <xref target= "git-divination-cfapi"/></t>
<t>Internet-Draft <xref target= "I-D.divination-cfapi"/></t>
<t>Text, RFC XML, PDF and HTML on the IETF Datatracker
<xref target= "datatracker-divination-cfapi"/></t>
</list>
</t>
<section anchor= "example-3-asciirfc" title= "In AsciiRFC">
<figure>
<artwork type= "asciidoc"><![CDATA[
<CODE BEGINS>
= An API For Calendar-Based Fortune Heuristics Services
Gabriel Destiny; Charise Luck
:doctype: internet-draft
:abbrev: Calendar Fortune Heuristics API
:name: draft-divination-cfapi-00
:status: informational
:ipr: trust200902
:area: Internet
:submission-type: independent
:intended-series: informational
:revdate: 2018-03-23T00:00:00Z
:lastname: Destiny
:fullname: Gabriel Destiny
:forename_initials: G.
:organization: Divination Inc.
:email: gabriel.destiny@ribose.com
:street: 9288 N Divine Street
:city: Dunn
:code: 28334
:region: NC
:country: United States of America
:lastname_2: Luck
:fullname_2: Charise Luck
:forename_initials_2: C.
:organization_2: Divination Inc.
:email_2: charise.luck@ribose.com
:street_2: 9288 N Divine Street
:city_2: Dunn
:code_2: 28334
:region_2: NC
:country_2: United States of America

[.comment]
tag::sample[]
// tag::sample[]

[abstract]

This document describes a JSON HTTP API for online services that
provide calendar-based fortune heuristics.

== Introduction

Fortune-telling, the practice of predicting information about a
person's life, is an activity practiced throughout history.

While there are myriad forms of fortune telling methodologies, this
document applies to a particular form of service that provides fortune
heuristics, commonly known as "luck", for a particular subject based
on a calendar-based input.

Since HTTP <<RFC7230>> status codes are insufficient to convey
information about fortune heuristics, this specification defines a
simple JSON <<RFC8259>> document format for this purpose. The
response can be used by HTTP APIs to deliver results to non-human
clients or to an end-user.


== Conventions Used in This Document

The key words "*MUST*", "*MUST NOT*", "*REQUIRED*", "*SHALL*",
"*SHALL NOT*", "*SHOULD*", "*SHOULD NOT*", "*RECOMMENDED*",
"*NOT RECOMMENDED*", "*MAY*", and "*OPTIONAL*" in this document
are to be interpreted as described in BCP 14 <<RFC2119>> <<RFC8174>>
when, and only when, they appear in all capitals, as shown here.

The following definitions apply in this document:

Well-known URI:: This specification makes use of the "well-known URI"
feature of HTTP servers <<RFC5785>> to provide a bootstrapping URI for
the client usage of fortune heuristics services.

Root of Fortune:: The service discovery endpoint that provides a URI
list of available fortune heuristic endpoints available, in accordance
with <<service-discovery>>.

== Fortune Heuristics Service Well-Known URI

A well-known URI called "fortune" is registered by this specification
for fortune heuristics services (see <<iana>>).

Services complying with this document *SHOULD* have its well-known
URI pointing (directly or through redirection) to the Root of Fortune.

The Root of Fortune can be used by the client for service discovery,
namely, the available calendar-based fortune heuristics services
available on the server, as specified in <<service-discovery>>.

=== Well-Known URI Redirection

Servers *MUST* redirect HTTP requests for that resource to the
actual "context path" using one of the available mechanisms provided
by HTTP <<RFC7230>> (e.g., using a 301, 303, or 307 response).

Clients *MUST* handle HTTP redirects on the well-known URI.


=== Well-Known URI Cache Behavior

Servers *SHOULD* set an appropriate Cache-Control header value (as
according to <<RFC7234,5.2 of>>) in the redirect response to set
caching behavior as required by the type of response generated.


== New HTTP Methods: SEEK and DIVINE

This specification defines two new HTTP methods: "SEEK" and "DIVINE"
methods for HTTP <<RFC7230>>.

While HTTP GET requests are treated equivalently as the "SEEK" and
"DIVINE" requests, its usage is discouraged and therefore *SHOULD NOT*
be used.

Usage of these methods are defined in the sections below.


== Defined Data Types: Date-Time Formats

This specification defines a number of date-time formats as according
to the conventions of <<RFC3339>> for the unambiguous communication
between client and server.

The types defined are as follows.

`DATETIME`::
As described in <<RFC3339,5.6 of>>, with the addition that reduced
accuracy representations described in <<ISO.8601-1.2018>> are
supported.  Reduced accuracy date and times are accepted where a
date or time component (2-digits long) is replaced by "--".
+
For example, the date time "2018-04---T01:02:00Z" represents the UTC
time of 1:02am, on an unknown day within April of the year 2018.

`DATE`::
As described in "DATETIME", but the "time" component will not be
taken into account in the algorithm.


[#service-discovery]
== Fortune Heuristics Service Discovery

[#root-of-fortune]
=== Root of Fortune Path URI ("/")

The Root of Fortune URI, defined as "/" in this document, is used for
service discovery on types of calendar-based fortune heuristics
available.

An empty SEEK request with the "application/json" request type
*MUST* be sent to this endpoint to retrieve the available endpoints.
All other HTTP methods *MUST NOT* be supported at this URI.

An example of such a response is as follows:

[source,json]
----
HTTP/1.1 200 Success
Content-Type: application/json
Content-Language: en

{
"diviners" : [
"/astrology",
"/bazi",
]
}
----

A service discovery object *MUST* have the following members:

`diviners`::
(JSON array)
An array that contains endpoints that conform to this specification.
All endpoints listed here are relative to the Root of Fortune path.
For example, the path "/astrology" listed in the example has an
endpoint path of "[root-of-fortune]/astrology", where
"[root-of-fortune]" indicates the real path of the Root of Fortune.


// end::sample[]
[.comment]
end::sample[]


[#service-endpoint]
== Fortune Heuristics Service Endpoint

An endpoint offering fortune heuristics services *MUST* adhere to
specifications in this section.

A service *MAY* implement multiple divination services based on
different divination methods, such as the digital oracle shown
in <<digital-oracle>>.


[[digital-oracle]]
.Dimensional Eye, a digital oracle that communicates through one button
====
[alt=An incarnation of the Dimensional Eye, in ASCII]
....
                                  __
                             __===^-\
                        __===       -\
                    __===-           -\
               __===-                 -\
         ___===-                       -\
      ===-               ---__          -\
      \\\              |||^^\ \__        -\
       \\\             |||       \__      -\
        \\\            |||    ______\_     -\
         \\\           |||  _/-******\\__   -\
          \\\          ||  /-****_****-\ \_  -\
           \\\         || |-***/   \***-\  \_ -\
            \\\        || |-***\___/***-|    \ -\
             \\\       ||  \-*********-/  __--/ -\
              \\\      ||    \-******/__--       -\
               \\\     ||        __--             -\
                \\\    ||    __--                  -\
                 \\\   ||__--                       -\
                  \\\                                -\
                   \\\                                -\
                    \\\                                -\
                     \\\                                -\
                      \\\                  __            -\
                       \\\               //##\\           -\
                        \\\              \\##//            -\
                         \\\               ^^          __--==^
                          \\\                    __--===
                           \\\             __--===
                            \\\      __--===
                             \\\ __--==
                              \\=

....
====

[#endpoint-specification-request]
=== Service Specification Request

To retrieve capabilities and parameters of an endpoint complying with
this specification, a service specification JSON object is returned.

An empty SEEK request with the "application/json" request type
*MUST* be sent to this endpoint to retrieve the service
specification that describes parameters accepted by this endpoint.

Two examples of such a response are given below.

[source,json]
----
HTTP/1.1 200 Success
Content-Type: application/json
Content-Language: en

{
"description": "Gaze into your upcoming luck!",
"details": "https://divine.example.com/manual/astrology-api",
"parameters": {
"birthday": {
"type": "DATE",
"description": "Your birth date in UTC"
},
"targetDateBegin": {
"type": "DATE",
"description": "Start of the target date range to report on"
},
"targetDateEnd": {
"type": "DATE",
"description": "End of the target date range to report on"
},
"interval": {
"values": {
"D": "Daily",
"M": "Monthly",
"Y": "Yearly"
},
"description": "Available intervals to report on."
}
}
}
----

[source,json]
----
HTTP/1.1 200 Success
Content-Type: application/json
Content-Language: en

{
"description": "Matches and mis-matches according to the "
"Yin Yang and Five Elements techniques",
"details": "https://divine.example.com/manual/bazi-api",
"parameters": {
"birthday": {
"type": "DATETIME",
"description": "Your birth date and time in UTC"
},
"targetDateBegin": {
"type": "DATETIME",
"description": "Start of the target date/time range to report on"
},
"targetDateEnd": {
"type": "DATETIME",
"description": "End of the target date/time range to report on"
},
"interval": {
"values": {
"H": "Hourly",
"D": "Daily",
"M": "Monthly",
"Y": "Yearly"
},
"description": "Available intervals to report on."
}
}
}
----

[#service-endpoint-specification]
=== Service Specification Object

A service specification object *MUST* contain the following members.

`description`::
(string) A short, human-readable summary of the fortune heuristic
service at this endpoint. This *SHOULD* be a stable reference.

`details`::
(URI, optional) A URI reference that provides further details for
human consumption, such as API documentation that includes details of
parameters accepted or response states.

`parameters`::
(object, mandatory) An object that specifies what parameters
are accepted by this endpoint. Each parameter key within this object
specifies an accepted parameter name, and its value is a parameter
specification object, which is described below.

A parameter specification object *SHOULD* contain the following
members:

`type`::
(string, optional) The value type accepted by this parameter. Value
types are described in this document. This member is mutually
exclusive with `values`.

`description`::
(string, mandatory) The purpose of this parameter.

`values`::
(object, optional) The accepted values of this parameter, unlisted
values *SHOULD* not be accepted by the parameter. Each key within
this object specifies an accepted value, and its value provides a
description of the purpose of the value.


[#endpoint-report]
== Fortune Heuristics Report Request and Response

[#endpoint-report-request]
=== Fortune Heuristics Report Request

A request using the HTTP "DIVINE" method and the "application/json"
type *MUST* be sent to the fortune heuristic endpoint to retrieve
results for a fortune heuristic query.

The request made *MUST* conform to the specifications of the
endpoint, as retrieved via the "SEEK" method described in
<<endpoint-specification-request>>.

An example of a request is provided below.

[source]
----
URI: /divination/astrology
Method: DIVINE
Content-Type: application/json
Content-Language: en

{
"birthday": "1976-02-11T00:00:00Z",
"targetDateBegin": "2018-01-01T00:00:00Z",
"targetDateEnd": "2019-01-01T00:00:00Z",
"interval": "M"
}
----


[#endpoint-report-response]
=== Fortune Heuristics Report Response

A fortune heuristic query using the "DIVINE" method triggers a
response that contains a fortune heuristics report.

A successful response returns a JSON object that *MUST* conform
to the object structure described in this section.

A report object *SHOULD* contain the following members:

`type`::
(URI, mandatory) A URI that defines the type of the report located
at the `report` key of this object.

`report`::
(object, mandatory) An object that contains two keys, `intervals`
and `events`. The `intervals` object contains an array of interval
objects that matches the demanded intervals in the request within
the target date range.
The `events` object contains an array of significant event objects
within the target date range.

An example of a response is provided below.

[source]
----
URI: /divination/astrology
Method: DIVINE
HTTP/1.1 200 Success
Content-Type: application/json
Content-Language: en

{
"type": "https://association-of.astrology/reports/monthly",
"report": {
"intervals": [
{
"dateStart": "2018-01-01T00:00:00Z",
"dateEnd": "2018-02-01T00:00:00Z",
"categories": [
{
"category":
"https://divine.example.com/astrology/categories/health"
"value": 80,
"description": "Charge ahead with excellent health."
},
{
"category":
"https://divine.example.com/astrology/categories/love"
"value": 70,
"description":
"Give a certain person or situation another try!"
},
{
"category":
"https://divine.example.com/astrology/categories/finance"
"value": 5,
"description": "You've just realized that you don't have
any cash on hand."
}
]
},
{
"dateStart": "2018-02-01T00:00:00Z",
"dateEnd": "2018-03-01T00:00:00Z",
"..."
},
"..."
],
"events": [
{
"dateStart": "2018-01-15T03:20:00",
"dateEnd": "2018-01-16T20:22:15",
"description": "The planet of growth and good luck, Jupiter
will make a harmonious connection with power planet Pluto,
helping you connect with influential people",
"recommendation": "Engage in networking during this time."
},
{
"dateStart": "2018-03-22T00:12:40",
"dateEnd": "2018-03-28T02:45:03",
"description": "Communication planet Mercury enters your sign,
which will find you in a busier and chattier mood.",
"recommendation":
"Take charge of work with your newfound energy."
}
"..."
]
}
}
----


Fortune heuristic reports are created by a divination output that
*MAY* requires quantitative interpretation. A sample representation of
interpreting a graphical divination output is provided in
<<divination-message>>.

[[divination-message]]
.Forty-nine yarrow sticks reveals a mystical message on fortune
====
[alt=A mystical pattern in ASCII]
....
                                    0000000000000000000000000
        0000000000000000000000001 G 1000000000000000000000000
        0000000000000000000000011 R 1100000000000000000000000
        0000000000000000000000111 A 1110000000000000000000000
        0000000000000000000001111 C 1111000000000000000000000
        0000000000000000000011111 E 1111100000000000000000000
        0000000000000000000111111 , 1111110000000000000000000
        0000000000000000001111111   1111111000000000000000000
        0000000011111111111111111 M 1111111111111111100000000
        0000000111111111111111111 E 1111111111111111110000000
        0000001111111111111111111 R 1111111111111111111000000
        0000011111111111111111111 C 1111111111111111111100000
        0000111111111111111111111 Y 1111111111111111111110000
        0001111111111111111111111 , 1111111111111111111111000
        0011111111111111111111111   1111111111111111111111100
        0111111111111111111111111 A 1111111111111111111111110
        0000000000000000011111111 N 1111111100000000000000000
        0000000000000000111111111 D 1111111110000000000000000
        0000000000000001111111111   1111111111000000000000000
        0000000000000011111111111 P 1111111111100000000000000
        0000000000000111111111111 E 1111111111110000000000000
        0000000000001111111111111 A 1111111111111000000000000
        0000000000011111111111111 C 1111111111111100000000000
        0000000000111111111111111 E 1111111111111110000000000
        0000000001111111111111111 . 1111111111111111000000000
....
====



[#endpoint-report-interval-obj]
=== Report Interval Object

The `intervals` value of a report object contains a number of report
intervals -- each representing a non-overlapping period of the
selected interval length. When all of these intervals are put
together, the combined period *MUST* fully cover the requested
report target period.

An example interval object is shown below.

[source,json]
----
{
"dateStart": "2018-01-01T00:00:00Z",
"dateEnd": "2018-02-01T00:00:00Z",
"categories": [
{
"category":
"https://divine.example.com/astrology/categories/health"
"value": 80,
"description": "Charge ahead with your excellent health."
},
{
"category":
"https://divine.example.com/astrology/categories/love"
"value": 70,
"description": "Give a certain person or situation another try!"
},
{
"category":
"https://divine.example.com/astrology/categories/finance"
"value": 5,
"description": "You've just realized that you don't have
any cash on hand."
}
]
}
----

An interval object *MUST* contain the following members:

`dateStart`::
(datetime, mandatory) This value specifies the start of the period
which this interval object applies to.

`dateEnd`::
(datetime, mandatory) This value specifies the end of the period
which this interval object applies to.

In the given example, the `categories` key is an implementation
specific object that details heuristic results returned by the
selected algorithm. This *MAY* differ in different algorithms.


[#endpoint-report-event-obj]
=== Report Events Object

The `events` value of a report object contains a number of event
objects. Each event object represents an event relevant to the
calculation of fortune heuristics during a target report period. These
events *MAY* be of variable time lengths, and *MAY* be overlapping
amongst each other.

The following example demonstrates two event objects the service
determines relevant to a user's query.

[source,json]
----
{
"dateStart": "2018-01-15T03:20:00",
"dateEnd": "2018-01-16T20:22:15",
"description": "The planet of growth and good luck, Jupiter will
make a harmonious connection with power planet Pluto, helping you
connect with influential people",
"recommendation": "Engage in networking during this time."
},
{
"dateStart": "2018-03-22T00:12:40",
"dateEnd": "2018-03-28T02:45:03",
"description": "Communication planet Mercury enters your sign,
which will find you in a busier and chattier mood.",
"recommendation": "Take charge of work with your newfound energy."
}
----

Similar to an interval object, an event object *MUST* contain the
following members:

`dateStart`::
(datetime, mandatory) This value specifies the start of the period
described by the event.

`dateEnd`::
(datetime, mandatory) This value specifies the end of the period
described by the event.

In the given example, the keys `description` and `recommendation`
are implementation-specific details. This *MAY* differ in different
algorithms.


[#endpoint-report-errors]
=== Report Generation Errors

This specification makes use of normal HTTP error codes with the
following extensions.

Errors *MUST* be returned using the Problem JSON Structure as
accordance with <<RFC7807>>.

422 Unprocessable Entity::
For example, a malformed date-time parameter, or an illogical input,
such as when the subject's birthday occurs after the report target
date period.

473 Beyond Existing Capability::
The service determines that the outcome is too difficult to predict.
For example, in the case where the calculation is too complex to
complete in a certain time period. The service *SHOULD* issue this
response code to indicate that the client should not try the same
request again.

474 Outcome Impossible::
The service determines that the outcome is impossible. For example,
when the algorithm determines that the subject will have deceased
before the start of the requested target period.



[#security]
== Security Considerations

* TLS <<RFC5246>> and authenticated HTTP requests should be used to
protect the DIVINE request and responses due to the personal nature
of information transmitted.

* A client *SHOULD* verify the identity of the server on every
request to prevent impersonation or man-in-the-middle attacks, as data
transmitted to and from the server is sensitive information, and at
times critical information to the user.

* Synchronization of client and server time *MUST* be
well-considered in the implementation of this specification. A
mismatch of client and server time *MAY* lead to algorithm
miscalculations that can cause mistaken choices of a user that depends
on the reliability of this system.



[#iana]
== IANA Considerations

=== Well-Known URI Registrations

This document defines a well-known URI using the registration
procedure and template from <<RFC5785,5.1 of>>.

==== "fortune" Well-Known URI Registration

URI suffix::  fortune

Change controller::  IETF

Specification document(s)::  This document

Related information::  N/A.


[.comment]
tag::sample[]
// begin::sample[]

[bibliography]
== Normative References

++++

<reference anchor= 'RFC2119'
target= 'https://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement
Levels</title>
<author initials= 'S.' surname= 'Bradner' fullname='S. Bradner'>
<organization />
</author>
<date year= '1997' month= 'March' />
<abstract><t>In many standards track documents several words are
used to signify the requirements in the specification.  These
words are often capitalized. This document defines these words
as they should be interpreted in IETF documents.  This
document specifies an Internet Best Current Practices for the
Internet Community, and requests discussion and suggestions
for improvements.</t></abstract>
</front>
<seriesInfo name= 'BCP' value= '14'/>
<seriesInfo name= 'RFC' value= '2119'/>
<seriesInfo name= 'DOI' value= '10.17487/RFC2119'/>
</reference>

<reference anchor= 'RFC5785'
target= 'https://www.rfc-editor.org/info/rfc5785'>
<front>
<title>Defining Well-Known Uniform Resource Identifiers
(URIs)</title>
<author initials= 'M.' surname= 'Nottingham'
fullname='M. Nottingham'>
<organization />
</author>
<author initials= 'E.' surname= 'Hammer-Lahav'
fullname='E. Hammer-Lahav'>
<organization />
</author>
<date year= '2010' month= 'April' />
<abstract><t>This memo defines a path prefix for &quot;well-known
locations&quot;, &quot;/.well-known/&quot;, in selected Uniform
Resource Identifier (URI) schemes.
[STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name= 'RFC' value= '5785'/>
<seriesInfo name= 'DOI' value= '10.17487/RFC5785'/>
</reference>

<reference anchor= 'RFC7230'
target= 'https://www.rfc-editor.org/info/rfc7230'>
<front>
<title>Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and
Routing</title>
<author initials= 'R.' surname= 'Fielding' fullname='R. Fielding'
role='editor'>
<organization />
</author>
<author initials= 'J.' surname= 'Reschke' fullname='J. Reschke'
role='editor'>
<organization />
</author>
<date year= '2014' month= 'June' />
<abstract><t>The Hypertext Transfer Protocol (HTTP) is a stateless
application-level protocol for distributed, collaborative,
hypertext information systems.  This document provides an
overview of HTTP architecture and its associated terminology,
defines the &quot;http&quot; and &quot;https&quot; Uniform
Resource Identifier (URI) schemes, defines the HTTP/1.1
message syntax and parsing requirements, and describes related
security concerns for implementations.</t></abstract>
</front>
<seriesInfo name= 'RFC' value= '7230'/>
<seriesInfo name= 'DOI' value= '10.17487/RFC7230'/>
</reference>

<reference anchor= 'RFC7234'
target= 'https://www.rfc-editor.org/info/rfc7234'>
<front>
<title>Hypertext Transfer Protocol (HTTP/1.1): Caching</title>
<author initials= 'R.' surname= 'Fielding' fullname='R. Fielding'
role='editor'>
<organization />
</author>
<author initials= 'M.' surname= 'Nottingham' fullname='M.
Nottingham'
role='editor'>
<organization />
</author>
<author initials= 'J.' surname= 'Reschke' fullname='J. Reschke'
role='editor'>
<organization />
</author>
<date year= '2014' month= 'June' />
<abstract><t>The Hypertext Transfer Protocol (HTTP) is a stateless
\%application- level protocol for distributed, collaborative,
hypertext information systems.  This document defines HTTP
caches and the associated header fields that control cache
behavior or indicate cacheable response
messages.</t></abstract>
</front>
<seriesInfo name= 'RFC' value= '7234'/>
<seriesInfo name= 'DOI' value= '10.17487/RFC7234'/>
</reference>

<reference anchor= 'RFC7807'
target= 'https://www.rfc-editor.org/info/rfc7807'>
<front>
<title>Problem Details for HTTP APIs</title>
<author initials= 'M.' surname= 'Nottingham'
fullname='M. Nottingham'>
<organization />
</author>
<author initials= 'E.' surname= 'Wilde' fullname='E. Wilde'>
<organization />
</author>
<date year= '2016' month= 'March' />
<abstract><t>This document defines a &quot;problem detail&quot;
as a way to carry machine- readable details of errors in a
HTTP response to avoid the need to define new error response
formats for HTTP APIs.</t></abstract>
</front>
<seriesInfo name= 'RFC' value= '7807'/>
<seriesInfo name= 'DOI' value= '10.17487/RFC7807'/>
</reference>

<reference anchor= 'RFC8174'
target= 'https://www.rfc-editor.org/info/rfc8174'>
<front>
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key
Words</title>
<author initials= 'B.' surname= 'Leiba' fullname='B. Leiba'>
<organization />
</author>
<date year= '2017' month= 'May' />
<abstract><t>RFC 2119 specifies common key words that may be used
in protocol specifications.  This document aims to reduce
the ambiguity by clarifying that only UPPERCASE usage of the
key words have the defined special meanings.</t></abstract>
</front>
<seriesInfo name= 'BCP' value= '14'/>
<seriesInfo name= 'RFC' value= '8174'/>
<seriesInfo name= 'DOI' value= '10.17487/RFC8174'/>
</reference>

<reference anchor= 'RFC8259'
target= 'https://www.rfc-editor.org/info/rfc8259'>
<front>
<title>The JavaScript Object Notation (JSON) Data Interchange
Format</title>
<author initials= 'T.' surname= 'Bray' fullname='T. Bray'
role='editor'>
<organization />
</author>
<date year= '2017' month= 'December' />
<abstract><t>JavaScript Object Notation (JSON) is a lightweight,
text-based, language-independent data interchange format.
It was derived from the ECMAScript Programming Language
Standard.  JSON defines a small set of formatting rules for
the portable representation of structured data.</t>
<t>This document removes inconsistencies with other
specifications of JSON, repairs specification errors, and
offers experience-based interoperability
guidance.</t>
</abstract>
</front>
<seriesInfo name= 'STD' value= '90'/>
<seriesInfo name= 'RFC' value= '8259'/>
<seriesInfo name= 'DOI' value= '10.17487/RFC8259'/>
</reference>
++++

[bibliography]
== Informative References

++++

<reference anchor= 'ISO.8601-1.2018'
target= 'https://www.iso.org/en/standard/70907.html'>
<front>
<title>ISO/DIS 8601-1:2018, Data elements and interchange
formats -- Information interchange -- Representation of dates
and times -- Part 1: Basic rules</title>
<author>
<organization>ISO/IEC</organization>
<address>
<uri>http://www.iso.org</uri>
</address>
</author>
<date month= 'January' year= '2018'/>
<abstract><t></t></abstract>
</front>
</reference>


<reference anchor= 'RFC3339'
target= 'https://www.rfc-editor.org/info/rfc3339'>
<front>
<title>Date and Time on the Internet: Timestamps</title>
<author initials= 'G.' surname= 'Klyne' fullname='G. Klyne'>
<organization />
</author>
<author initials= 'C.' surname= 'Newman' fullname='C. Newman'>
<organization />
</author>
<date year= '2002' month= 'July' />
</front>
<seriesInfo name= 'RFC' value= '3339'/>
<seriesInfo name= 'DOI' value= '10.17487/RFC3339'/>
</reference>

<reference anchor= 'RFC5246'
target= 'https://www.rfc-editor.org/info/rfc5246'>
<front>
<title>The Transport Layer Security (TLS) Protocol
Version 1.2</title>
<author initials= 'T.' surname= 'Dierks' fullname='T. Dierks'>
<organization />
</author>
<author initials= 'E.' surname= 'Rescorla' fullname='E. Rescorla'>
<organization />
</author>
<date year= '2008' month= 'August' />
<abstract><t>This document specifies Version 1.2 of the Transport
Layer Security (TLS) protocol.  The TLS protocol provides
communications security over the Internet.  The protocol
allows client/server applications to communicate in a way
that is designed to prevent eavesdropping, tampering, or
message forgery.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name= 'RFC' value= '5246'/>
<seriesInfo name= 'DOI' value= '10.17487/RFC5246'/>
</reference>
++++



[appendix]
== Acknowledgements

The authors thank the following individuals for their valuable
feedback on this specification, and commend them for making fortune
heuristics more accessible for the benefit of mankind.

// end::sample[]
[.comment]
end::sample[]
<CODE ENDS>
]]></artwork>
</figure>
</section></section>
<section anchor= "example-3-xml3" title= "Rendered as RFC XML v3">
<figure>
<artwork type= "xml"><![CDATA[
<CODE BEGINS>
<?xml version= "1.0" encoding= "US-ASCII"?>
<?xml-stylesheet type= "text/xsl" href= "rfc2629.xslt"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc strict= "yes"?>
<?rfc compact= "yes"?>
<?rfc subcompact= "no"?>
<?rfc toc= "yes"?>
<?rfc tocdepth= "4"?>
<?rfc symrefs= "yes"?>
<?rfc sortrefs= "yes"?>
<rfc xmlns:xi= "http://www.w3.org/2001/XInclude" ipr= "trust200902"
submissionType="independent" prepTime="2018-04-18T03:35:38Z"
version="3">
<front>
<title abbrev= "Calendar Fortune Heuristics API">An API For
Calendar-Based Fortune Heuristics Services</title>
<seriesInfo name= "Internet-Draft" status= "informational"
stream="independent" value="draft-divination-cfapi-00"/>
<seriesInfo name= "" status="informational"
value="draft-divination-cfapi-00"/>
<author fullname= "Gabriel Destiny" surname= "Destiny" initials="G.">
<organization>Divination Inc.</organization>
<address>
<postal>
<street>9288 N Divine Street</street>
<city>Dunn</city>
<region>NC</region>
<code>28334</code>
<country>United States of America</country>
</postal>
<email>gabriel.destiny@ribose.com</email>
</address>
</author>
<author fullname= "Charise Luck" surname= "Luck" initials="C.">
<organization>Divination Inc.</organization>
<address>
<postal>
<street>9288 N Divine Street</street>
<city>Dunn</city>
<region>NC</region>
<code>28334</code>
<country>United States of America</country>
</postal>
<email>charise.luck@ribose.com</email>
</address>
</author>
<date day= "23" month= "March" year="2018"/>
<area>Internet</area>

<abstract>

<!-- tag::sample[] -->


<t>This document describes a JSON HTTP API for online services that
provide calendar-based fortune heuristics.</t></abstract>
</front><middle>
<section anchor= "_introduction" numbered=
"false"><name>Introduction</name><t>Fortune-telling, the practice of
predicting information about a
person&#8217;s life, is an activity practiced throughout history.</t>
<t>While there are myriad forms of fortune telling methodologies, this
document applies to a particular form of service that provides fortune
heuristics, commonly known as "luck", for a particular subject based
on a calendar-based input.</t>
<t>Since HTTP <xref target= "RFC7230"/> status codes are insufficient to
convey
information about fortune heuristics, this specification defines a
simple JSON <xref target= "RFC8259"/> document format for this purpose.
The
response can be used by HTTP APIs to deliver results to non-human
clients or to an end-user.</t></section>
<section anchor= "_conventions_used_in_this_document" numbered=
"false"><name>Conventions Used in This Document</name><t>The key words
"<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>",
"<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>",
"<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD
NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>",
"<strong>NOT RECOMMENDED</strong>", "<bcp14>MAY</bcp14>", and
"<bcp14>OPTIONAL</bcp14>" in this document
are to be interpreted as described in BCP 14 <xref target= "RFC2119"/>
<xref target="RFC8174"/>
when, and only when, they appear in all capitals, as shown here.</t>
<t>The following definitions apply in this document:</t>
<dl>
<dt>Well-known URI</dt>
<dd>This specification makes use of the "well-known URI"
feature of HTTP servers <xref target= "RFC5785"/> to provide a
bootstrapping URI for
the client usage of fortune heuristics services.</dd>
<dt>Root of Fortune</dt>
<dd>The service discovery endpoint that provides a URI
list of available fortune heuristic endpoints available, in accordance
with <xref target= "service-discovery"/>.</dd>
</dl></section>
<section anchor= "_fortune_heuristics_service_well_known_uri" numbered=
"false"><name>Fortune Heuristics Service Well-Known URI</name><t>A
well-known URI called "fortune" is registered by this specification
for fortune heuristics services (see <xref target= "iana"/>).</t>
<t>Services complying with this document <bcp14>SHOULD</bcp14> have its
well-known
URI pointing (directly or through redirection) to the Root of
Fortune.</t>
<t>The Root of Fortune can be used by the client for service discovery,
namely, the available calendar-based fortune heuristics services
available on the server, as specified in <xref target=
"service-discovery"/>.</t>
<section anchor= "_well_known_uri_redirection" numbered=
"false"><name>Well-Known URI Redirection</name><t>Servers
<bcp14>MUST</bcp14> redirect HTTP requests for that resource to the
actual "context path" using one of the available mechanisms provided
by HTTP <xref target= "RFC7230"/> (e.g., using a 301, 303, or 307
response).</t>
<t>Clients <bcp14>MUST</bcp14> handle HTTP redirects on the well-known
URI.</t></section>
<section anchor= "_well_known_uri_cache_behavior" numbered= "false">
<name>Well-Known URI Cache Behavior</name>
<t>Servers <bcp14>SHOULD</bcp14> set an appropriate Cache-Control
header value (as
according to <relref section= "5.2" displayFormat= "of"
target="RFC7234"/>) in the redirect response to set
caching behavior as required by the type of response generated.</t>
</section></section>
<section anchor= "_new_http_methods_seek_and_divine" numbered=
"false"><name>New HTTP Methods: SEEK and DIVINE</name><t>This
specification defines two new HTTP methods: "SEEK" and "DIVINE"
methods for HTTP <xref target= "RFC7230"/>.</t>
<t>While HTTP GET requests are treated equivalently as the "SEEK" and
"DIVINE" requests, its usage is discouraged and therefore <bcp14>SHOULD
NOT</bcp14>
be used.</t>
<t>Usage of these methods are defined in the sections
below.</t></section>
<section anchor= "_defined_data_types_date_time_formats" numbered=
"false"><name>Defined Data Types: Date-Time Formats</name><t>This
specification defines a number of date-time formats as according
to the conventions of <xref target= "RFC3339"/> for the unambiguous
communication
between client and server.</t>
<t>The types defined are as follows.</t>
<dl>
<dt>
<tt>DATETIME</tt>
</dt>
<dd>
<t>As described in <relref section= "5.6" displayFormat= "of"
target="RFC3339"/>, with the addition that reduced
accuracy representations described in <xref target= "ISO.8601-1.2018"/>
are
supported.  Reduced accuracy date and times are accepted where a
date or time component (2-digits long) is replaced by "--".</t>
<t>For example, the date time "2018-04---T01:02:00Z" represents the
UTC
time of 1:02am, on an unknown day within April of the year 2018.</t>
</dd>
<dt>
<tt>DATE</tt>
</dt>
<dd>As described in "DATETIME", but the "time" component will not be
taken into account in the algorithm.</dd>
</dl></section>
<section anchor= "service-discovery" numbered= "false">
<name>Fortune Heuristics Service Discovery</name>
<section anchor= "root-of-fortune" numbered= "false"><name>Root of
Fortune Path URI ("/")</name><t>The Root of Fortune URI, defined as "/"
in this document, is used for
service discovery on types of calendar-based fortune heuristics
available.</t>
<t>An empty SEEK request with the "application/json" request type
<bcp14>MUST</bcp14> be sent to this endpoint to retrieve the available
endpoints.
All other HTTP methods <bcp14>MUST NOT</bcp14> be supported at this
URI.</t>
<t>An example of such a response is as follows:</t>
<figure>
<sourcecode type= "json"><![CDATA[
HTTP/1.1 200 Success
Content-Type: application/json
Content-Language: en

{
"diviners" : [
"/astrology",
"/bazi",
]
}
]]]]><![CDATA[></sourcecode>
</figure>
<t>A service discovery object <bcp14>MUST</bcp14> have the following
members:</t>
<dl>
<dt>
<tt>diviners</tt>
</dt>
<dd>(JSON array)
An array that contains endpoints that conform to this specification.
All endpoints listed here are relative to the Root of Fortune path.
For example, the path "/astrology" listed in the example has an
endpoint path of "[root-of-fortune]/astrology", where
"[root-of-fortune]" indicates the real path of the Root of Fortune.</dd>
</dl>


<!-- end::sample[] -->

</section>
</section>
<section anchor= "service-endpoint" numbered= "false"><name>Fortune
Heuristics Service Endpoint</name><t>An endpoint offering fortune
heuristics services <bcp14>MUST</bcp14> adhere to
specifications in this section.</t>
<t>A service <bcp14>MAY</bcp14> implement multiple divination services
based on
different divination methods, such as the digital oracle shown
in <xref target= "digital-oracle"/>.</t>
<figure anchor= "digital-oracle">
<name>Dimensional Eye, a digital oracle that communicates through one
button</name>
<artwork type= "ascii-art" alt= "An incarnation of the Dimensional
Eye"><![CDATA[
                                  __
                             __===^-\
                        __===       -\
                    __===-           -\
               __===-                 -\
         ___===-                       -\
      ===-               ---__          -\
      \\\              |||^^\ \__        -\
       \\\             |||       \__      -\
        \\\            |||    ______\_     -\
         \\\           |||  _/-******\\__   -\
          \\\          ||  /-****_****-\ \_  -\
           \\\         || |-***/   \***-\  \_ -\
            \\\        || |-***\___/***-|    \ -\
             \\\       ||  \-*********-/  __--/ -\
              \\\      ||    \-******/__--       -\
               \\\     ||        __--             -\
                \\\    ||    __--                  -\
                 \\\   ||__--                       -\
                  \\\                                -\
                   \\\                                -\
                    \\\                                -\
                     \\\                                -\
                      \\\                  __            -\
                       \\\               //##\\           -\
                        \\\              \\##//            -\
                         \\\               ^^          __--==^
                          \\\                    __--===
                           \\\             __--===
                            \\\      __--===
                             \\\ __--==
                              \\=

]]]]><![CDATA[></artwork>
</figure>
<section anchor= "endpoint-specification-request" numbered=
"false"><name>Service Specification Request</name><t>To retrieve
capabilities and parameters of an endpoint complying with
this specification, a service specification JSON object is returned.</t>
<t>An empty SEEK request with the "application/json" request type
<bcp14>MUST</bcp14> be sent to this endpoint to retrieve the service
specification that describes parameters accepted by this endpoint.</t>
<t>Two examples of such a response are given below.</t>
<figure>
<sourcecode type= "json"><![CDATA[
HTTP/1.1 200 Success
Content-Type: application/json
Content-Language: en

{
"description": "Gaze into your upcoming luck!",
"details": "https://divine.example.com/manual/astrology-api",
"parameters": {
"birthday": {
"type": "DATE",
"description": "Your birth date in UTC"
},
"targetDateBegin": {
"type": "DATE",
"description": "Start of the target date range to report on"
},
"targetDateEnd": {
"type": "DATE",
"description": "End of the target date range to report on"
},
"interval": {
"values": {
"D": "Daily",
"M": "Monthly",
"Y": "Yearly"
},
"description": "Available intervals to report on."
}
}
}
]]]]><![CDATA[></sourcecode>
</figure>
<figure>
<sourcecode type= "json"><![CDATA[
HTTP/1.1 200 Success
Content-Type: application/json
Content-Language: en

{
"description": "Matches and mis-matches according to the "
"Yin Yang and Five Elements techniques",
"details": "https://divine.example.com/manual/bazi-api",
"parameters": {
"birthday": {
"type": "DATETIME",
"description": "Your birth date and time in UTC"
},
"targetDateBegin": {
"type": "DATETIME",
"description": "Start of the target date/time range to report on"
},
"targetDateEnd": {
"type": "DATETIME",
"description": "End of the target date/time range to report on"
},
"interval": {
"values": {
"H": "Hourly",
"D": "Daily",
"M": "Monthly",
"Y": "Yearly"
},
"description": "Available intervals to report on."
}
}
}
]]]]><![CDATA[></sourcecode>
</figure></section>
<section anchor= "service-endpoint-specification" numbered=
"false"><name>Service Specification Object</name><t>A service
specification object <bcp14>MUST</bcp14> contain the following
members.</t>
<dl>
<dt>
<tt>description</tt>
</dt>
<dd>(string) A short, human-readable summary of the fortune heuristic
service at this endpoint. This <bcp14>SHOULD</bcp14> be a stable
reference.</dd>
<dt>
<tt>details</tt>
</dt>
<dd>(URI, optional) A URI reference that provides further details for
human consumption, such as API documentation that includes details of
parameters accepted or response states.</dd>
<dt>
<tt>parameters</tt>
</dt>
<dd>(object, mandatory) An object that specifies what parameters
are accepted by this endpoint. Each parameter key within this object
specifies an accepted parameter name, and its value is a parameter
specification object, which is described below.</dd>
</dl>
<t>A parameter specification object <bcp14>SHOULD</bcp14> contain the
following
members:</t>
<dl>
<dt>
<tt>type</tt>
</dt>
<dd>(string, optional) The value type accepted by this parameter.
Value
types are described in this document. This member is mutually
exclusive with <tt>values</tt>.</dd>
<dt>
<tt>description</tt>
</dt>
<dd>(string, mandatory) The purpose of this parameter.</dd>
<dt>
<tt>values</tt>
</dt>
<dd>(object, optional) The accepted values of this parameter, unlisted
values <bcp14>SHOULD</bcp14> not be accepted by the parameter. Each key
within
this object specifies an accepted value, and its value provides a
description of the purpose of the value.</dd>
</dl></section></section>
<section anchor= "endpoint-report" numbered= "false"><name>Fortune
Heuristics Report Request and Response</name><section anchor=
"endpoint-report-request" numbered="false"><name>Fortune Heuristics
Report Request</name><t>A request using the HTTP "DIVINE" method and the
"application/json"
type <bcp14>MUST</bcp14> be sent to the fortune heuristic endpoint to
retrieve
results for a fortune heuristic query.</t>
<t>The request made <bcp14>MUST</bcp14> conform to the specifications of
the
endpoint, as retrieved via the "SEEK" method described in
<xref target= "endpoint-specification-request"/>.</t>
<t>An example of a request is provided below.</t>
<figure>
<sourcecode><![CDATA[
URI: /divination/astrology
Method: DIVINE
Content-Type: application/json
Content-Language: en

{
"birthday": "1976-02-11T00:00:00Z",
"targetDateBegin": "2018-01-01T00:00:00Z",
"targetDateEnd": "2019-01-01T00:00:00Z",
"interval": "M"
}
]]]]><![CDATA[></sourcecode>
</figure></section>
<section anchor= "endpoint-report-response" numbered=
"false"><name>Fortune Heuristics Report Response</name><t>A fortune
heuristic query using the "DIVINE" method triggers a
response that contains a fortune heuristics report.</t>
<t>A successful response returns a JSON object that <bcp14>MUST</bcp14>
conform
to the object structure described in this section.</t>
<t>A report object <bcp14>SHOULD</bcp14> contain the following
members:</t>
<dl>
<dt>
<tt>type</tt>
</dt>
<dd>(URI, mandatory) A URI that defines the type of the report located
at the <tt>report</tt> key of this object.</dd>
<dt>
<tt>report</tt>
</dt>
<dd>(object, mandatory) An object that contains two keys,
<tt>intervals</tt>
and <tt>events</tt>. The <tt>intervals</tt> object contains an array of
interval
objects that matches the demanded intervals in the request within
the target date range.
The <tt>events</tt> object contains an array of significant event
objects
within the target date range.</dd>
</dl>
<t>An example of a response is provided below.</t>
<figure>
<sourcecode><![CDATA[
URI: /divination/astrology
Method: DIVINE
HTTP/1.1 200 Success
Content-Type: application/json
Content-Language: en

{
"type": "https://association-of.astrology/reports/monthly",
"report": {
"intervals": [
{
"dateStart": "2018-01-01T00:00:00Z",
"dateEnd": "2018-02-01T00:00:00Z",
"categories": [
{
"category":
"https://divine.example.com/astrology/categories/health"
"value": 80,
"description": "Charge ahead with excellent health."
},
{
"category":
"https://divine.example.com/astrology/categories/love"
"value": 70,
"description":
"Give a certain person or situation another try!"
},
{
"category":
"https://divine.example.com/astrology/categories/finance"
"value": 5,
"description": "You've just realized that you don't have
any cash on hand."
}
]
},
{
"dateStart": "2018-02-01T00:00:00Z",
"dateEnd": "2018-03-01T00:00:00Z",
"..."
},
"..."
],
"events": [
{
"dateStart": "2018-01-15T03:20:00",
"dateEnd": "2018-01-16T20:22:15",
"description": "The planet of growth and good luck, Jupiter
will make a harmonious connection with power planet Pluto,
helping you connect with influential people",
"recommendation": "Engage in networking during this time."
},
{
"dateStart": "2018-03-22T00:12:40",
"dateEnd": "2018-03-28T02:45:03",
"description": "Communication planet Mercury enters your sign,
which will find you in a busier and chattier mood.",
"recommendation":
"Take charge of work with your newfound energy."
}
"..."
]
}
}
]]]]><![CDATA[></sourcecode>
</figure>
<t>Fortune heuristic reports are created by a divination output that
<bcp14>MAY</bcp14> requires quantitative interpretation. A sample
representation of
interpreting a graphical divination output is provided in
<xref target= "divination-message"/>.</t>
<figure anchor= "divination-message">
<name>Forty-nine yarrow sticks reveals a mystical message on
fortune</name>
<artwork type= "ascii-art" alt= "A mystical pattern in
ASCII"><![CDATA[
                                    0000000000000000000000000
        0000000000000000000000001 G 1000000000000000000000000
        0000000000000000000000011 R 1100000000000000000000000
        0000000000000000000000111 A 1110000000000000000000000
        0000000000000000000001111 C 1111000000000000000000000
        0000000000000000000011111 E 1111100000000000000000000
        0000000000000000000111111 , 1111110000000000000000000
        0000000000000000001111111   1111111000000000000000000
        0000000011111111111111111 M 1111111111111111100000000
        0000000111111111111111111 E 1111111111111111110000000
        0000001111111111111111111 R 1111111111111111111000000
        0000011111111111111111111 C 1111111111111111111100000
        0000111111111111111111111 Y 1111111111111111111110000
        0001111111111111111111111 , 1111111111111111111111000
        0011111111111111111111111   1111111111111111111111100
        0111111111111111111111111 A 1111111111111111111111110
        0000000000000000011111111 N 1111111100000000000000000
        0000000000000000111111111 D 1111111110000000000000000
        0000000000000001111111111   1111111111000000000000000
        0000000000000011111111111 P 1111111111100000000000000
        0000000000000111111111111 E 1111111111110000000000000
        0000000000001111111111111 A 1111111111111000000000000
        0000000000011111111111111 C 1111111111111100000000000
        0000000000111111111111111 E 1111111111111110000000000
        0000000001111111111111111 . 1111111111111111000000000
]]]]><![CDATA[></artwork>
</figure></section>
<section anchor= "endpoint-report-interval-obj" numbered=
"false"><name>Report Interval Object</name><t>The <tt>intervals</tt>
value of a report object contains a number of report
intervals&#8201;&#8212;&#8201;each representing a non-overlapping period
of the
selected interval length. When all of these intervals are put
together, the combined period <bcp14>MUST</bcp14> fully cover the
requested
report target period.</t>
<t>An example interval object is shown below.</t>
<figure>
<sourcecode type= "json"><![CDATA[
{
"dateStart": "2018-01-01T00:00:00Z",
"dateEnd": "2018-02-01T00:00:00Z",
"categories": [
{
"category":
"https://divine.example.com/astrology/categories/health"
"value": 80,
"description": "Charge ahead with your excellent health."
},
{
"category":
"https://divine.example.com/astrology/categories/love"
"value": 70,
"description": "Give a certain person or situation another try!"
},
{
"category":
"https://divine.example.com/astrology/categories/finance"
"value": 5,
"description": "You've just realized that you don't have
any cash on hand."
}
]
}
]]]]><![CDATA[></sourcecode>
</figure>
<t>An interval object <bcp14>MUST</bcp14> contain the following
members:</t>
<dl>
<dt>
<tt>dateStart</tt>
</dt>
<dd>(datetime, mandatory) This value specifies the start of the period
which this interval object applies to.</dd>
<dt>
<tt>dateEnd</tt>
</dt>
<dd>(datetime, mandatory) This value specifies the end of the period
which this interval object applies to.</dd>
</dl>
<t>In the given example, the <tt>categories</tt> key is an
implementation
specific object that details heuristic results returned by the
selected algorithm. This <bcp14>MAY</bcp14> differ in different
algorithms.</t></section>
<section anchor= "endpoint-report-event-obj" numbered=
"false"><name>Report Events Object</name><t>The <tt>events</tt> value of
a report object contains a number of event
objects. Each event object represents an event relevant to the
calculation of fortune heuristics during a target report period. These
events <bcp14>MAY</bcp14> be of variable time lengths, and
<bcp14>MAY</bcp14> be overlapping
amongst each other.</t>
<t>The following example demonstrates two event objects the service
determines relevant to a user&#8217;s query.</t>
<figure>
<sourcecode type= "json"><![CDATA[
{
"dateStart": "2018-01-15T03:20:00",
"dateEnd": "2018-01-16T20:22:15",
"description": "The planet of growth and good luck, Jupiter will
make a harmonious connection with power planet Pluto, helping you
connect with influential people",
"recommendation": "Engage in networking during this time."
},
{
"dateStart": "2018-03-22T00:12:40",
"dateEnd": "2018-03-28T02:45:03",
"description": "Communication planet Mercury enters your sign,
which will find you in a busier and chattier mood.",
"recommendation": "Take charge of work with your newfound energy."
}
]]]]><![CDATA[></sourcecode>
</figure>
<t>Similar to an interval object, an event object <bcp14>MUST</bcp14>
contain the
following members:</t>
<dl>
<dt>
<tt>dateStart</tt>
</dt>
<dd>(datetime, mandatory) This value specifies the start of the period
described by the event.</dd>
<dt>
<tt>dateEnd</tt>
</dt>
<dd>(datetime, mandatory) This value specifies the end of the period
described by the event.</dd>
</dl>
<t>In the given example, the keys <tt>description</tt> and
<tt>recommendation</tt>
are implementation-specific details. This <bcp14>MAY</bcp14> differ in
different
algorithms.</t></section>
<section anchor= "endpoint-report-errors" numbered= "false"><name>Report
Generation Errors</name><t>This specification makes use of normal HTTP
error codes with the
following extensions.</t>
<t>Errors <bcp14>MUST</bcp14> be returned using the Problem JSON
Structure as
accordance with <xref target= "RFC7807"/>.</t>
<dl>
<dt>422 Unprocessable Entity</dt>
<dd>For example, a malformed date-time parameter, or an illogical
input,
such as when the subject&#8217;s birthday occurs after the report target
date period.</dd>
<dt>473 Beyond Existing Capability</dt>
<dd>The service determines that the outcome is too difficult to
predict.
For example, in the case where the calculation is too complex to
complete in a certain time period. The service <bcp14>SHOULD</bcp14>
issue this
response code to indicate that the client should not try the same
request again.</dd>
<dt>474 Outcome Impossible</dt>
<dd>The service determines that the outcome is impossible. For
example,
when the algorithm determines that the subject will have deceased
before the start of the requested target period.</dd>
</dl></section></section>
<section anchor= "security" numbered= "false">
<name>Security Considerations</name>
<ul>
<li>TLS <xref target= "RFC5246"/> and authenticated HTTP requests
should be used to
protect the DIVINE request and responses due to the personal nature
of information transmitted.</li>
<li>A client <bcp14>SHOULD</bcp14> verify the identity of the server
on every
request to prevent impersonation or man-in-the-middle attacks, as data
transmitted to and from the server is sensitive information, and at
times critical information to the user.</li>
<li>Synchronization of client and server time <bcp14>MUST</bcp14> be
well-considered in the implementation of this specification. A
mismatch of client and server time <bcp14>MAY</bcp14> lead to algorithm
miscalculations that can cause mistaken choices of a user that depends
on the reliability of this system.</li>
</ul>
</section>
<section anchor= "iana" numbered= "false">
<name>IANA Considerations</name>
<section anchor= "_well_known_uri_registrations" numbered=
"false"><name>Well-Known URI Registrations</name><t>This document
defines a well-known URI using the registration
procedure and template from <relref section= "5.1" displayFormat= "of"
target="RFC5785"/>.</t>
<section anchor= "_fortune_well_known_uri_registration" numbered=
"false"><name>"fortune" Well-Known URI Registration</name><dl>
<dt>URI suffix</dt>
<dd>fortune</dd>
<dt>Change controller</dt>
<dd>IETF</dd>
<dt>Specification document(s)</dt>
<dd>This document</dd>
<dt>Related information</dt>
<dd>N/A.</dd>
</dl>


<!-- tag::sample[] -->

</section></section>
</section>
</middle><back>
<references anchor= "_normative_references">
<name>Normative References</name>
<xi:include href=
"https://xml2rfc.tools.ietf.org/public/rfc/bibxml/\
reference.RFC.2119.xml"
parse= "text"/>
<xi:include href=
"https://xml2rfc.tools.ietf.org/public/rfc/bibxml/\
reference.RFC.5785.xml"
parse= "text"/>
<xi:include href=
"https://xml2rfc.tools.ietf.org/public/rfc/bibxml/\
reference.RFC.7230.xml"
parse= "text"/>
<xi:include href=
"https://xml2rfc.tools.ietf.org/public/rfc/bibxml/\
reference.RFC.7234.xml"
parse= "text"/>
<xi:include href=
"https://xml2rfc.tools.ietf.org/public/rfc/bibxml/\
reference.RFC.7807.xml"
parse= "text"/>
<xi:include href=
"https://xml2rfc.tools.ietf.org/public/rfc/bibxml/\
reference.RFC.8174.xml"
parse= "text"/>
<xi:include href=
"https://xml2rfc.tools.ietf.org/public/rfc/bibxml/\
reference.RFC.8259.xml"
parse= "text"/>
</references>
<references anchor= "_informative_references">
<name>Informative References</name>
<reference anchor= "ISO.8601-1.2018" target=
"https://www.iso.org/en/standard/70907.html">
<front>
<title>ISO/DIS 8601-1:2018, Data elements and interchange
formats -- Information interchange -- Representation of dates
and times -- Part 1: Basic rules</title>
<author>
<organization>ISO/IEC</organization>
<address>
<uri>http://www.iso.org</uri>
</address>
</author>
<date month= "January" year= "2018"/>
<abstract><t/></abstract>
</front>
</reference>
<xi:include href=
"https://xml2rfc.tools.ietf.org/public/rfc/bibxml/\
reference.RFC.3339.xml"
parse= "text"/>
<xi:include href=
"https://xml2rfc.tools.ietf.org/public/rfc/bibxml/\
reference.RFC.5246.xml"
parse= "text"/>
</references>
<section anchor= "_acknowledgements" numbered=
"false"><name>Acknowledgements</name><t>The authors thank the following
individuals for their valuable
feedback on this specification, and commend them for making fortune
heuristics more accessible for the benefit of mankind.</t>


<!-- end::sample[] -->

</section>
</back>
</rfc>
<CODE ENDS>
]]></artwork>
</figure>
</section></section>
<section anchor= "_acknowledgements" title= "Acknowledgements"><t>The
authors would like to thank the following persons for their
valuable advice and input.</t>
<t>
<list style= "symbols">
<t>Adrian Farrel for his comprehensive review of the document and
numerous beneficial suggestions.</t>
</list>
</t></section>
</back>
</rfc>
