* 文書型

**実体参照

:amp:& [XML]
:lt:< [XML]
:gt:> [XML]
:quot:" [XML]
:apos:' [XML]
:<!ENTITY   rfc.number "XXXX">:RFC 番号 [RFC2629]

**根

:内容:(XML,DOCTYPE,PI?,rfc)

*処理命令 PI

<?rfc symrefs="yes"?> みたいにします。擬似属性は、
一つの擬似タグごとに一つしか使えません。 (実装はそう想定してます。)

擬似要素名 rfc は xml2rfc が使っているもので、
rfc-translation は [JA] が定義したものです。

,擬似要素名,擬似属性名,内容,既定値,説明
,rfc       ,symref    ,yn  ,'no'  ,参考文献参照で名前 [JA] を使う。偽なら番号 [1]
,rfc       ,toc       ,yn  ,'no'  ,目次を出力するか
,rfc       ,private   ,TEXT,''    ,RFC でない場合に series 名
,rfc-translation,show-header-category,yn,'yes',頭に「分類」を出力するか
,rfc-translation,show-rfc-copyright,yn,,RFC 著作権を出力するか
,rfc-translation,show-rfc-acknowledgement-editor,yn,,RFC 書記謝辞を出力するか
,rfc-translation,output-http-equiv,yn,'no',[[Content-Style-Type:領域]]を (X)HTML の meta 要素で出力するか


=yn = 'yes' / 'no'

既定値欄空欄は、状況によって変化することを示す。

* 要素

[FIG(short list)[ [28] [[XML要素]]
- [CODE[date][<date> (RFC 2629)]]
- [CODE[t][<t> (RFC 2629)]]
]FIG]

* MIME 型

[12] [[RFC 7749]] は、 [[MIME型]]として
[DFN[[CODE(MIME)@en[application/rfc+xml]]]]
を規定しています。

[HISTORY[
[11] [[RFC 2629]] 時代には、 [[MIME型]]の規定はありませんでした。

[8] [[和訳]]を含む[[文書]]の [[MIME型]]は [DFN[[CODE(MIME)@en[[[application/x-rfc-translation+xml]]]]]]
です。

[9] [CODE(MIME)@en[[[application/x-rfc-translation+xml]]]] な[[文書]]の[[根要素]]は [[RFC 2629]]
の [CODE(XMLe)@en[[[rfc]]]] [[要素]]でなければ[['''なりません''']]。
それ以外は [CODE(MIME)@en[[[application/xml]]]] と同じように扱わなければ[['''なりません''']]。

;; [10] これには[[ナビゲーション]]における処理や[[素片識別子]]の解釈、
[CODE(MIME)@en[[[charset]]]] [[引数]]の意味、 [[XML]] の版などを含みますが、それに限りません。
]HISTORY]

* 歴史

**RFC 2629 “Writing I-Ds and RFCs using XML”

[25] 
XML を使って RFC を書く言語を定義しているのが RFC 2629

- [26] [CITE@en[RFC 2629 - Writing I-Ds and RFCs using XML]], [TIME[2021-03-28T08:59:32.000Z]], [TIME[2021-04-09T08:54:38.089Z]] <https://tools.ietf.org/html/rfc2629>
- [27] 和訳 <https://suika.suikawiki.org/~wakaba/documents/rfc-ja/rfc2629-ja>。

:文書型宣言:<!DOCTYPE rfc SYSTEM "rfc2629.dtd">

**xml2rfc 実装

RFC 2629 の著者の実装。処理命令を使って、 RFC 2629
に書いていない機能を入れてます。 <http://xml.resource.org/> 参照。

**拡張可能な RFC の翻訳マーク付け言語

[31] 
[[RFC 2629]] を拡張して、 RFC の和訳をマーク付けしよーというものです。
仕様はまだ確定してません。

:名前空間 URI:<http://suika.fam.cx/~wakaba/lang/rfc/translation/>

[29] 
以下の説明では、名前空間接頭辞 "ja" をこの名前空間 URI
と関連付けてあるものとします。

[30] 重要: [[DDNS]] サービス停止によりこの [[URL]]
には [[Webブラウザー]]でアクセスできなくなりました。
[[名前空間URL]]は変更できないのでそのままです。


[33] [CITE@en[wakaba/rfclang]], [TIME[2023-04-18T07:38:59.000Z]] <https://github.com/wakaba/rfclang>


[32] 
[CITE@en[wakaba/rfc-ja-translations: RFC Japanese translations]], [TIME[2023-04-18T07:38:22.000Z]] <https://github.com/wakaba/rfc-ja-translations>

[35] 関連: [[RFCの和訳]]

***データ型

:<!ENTITY % NUMBER     "CDATA">:1*DIGIT
:<!ENTITY % NUMBERS    "CDATA">:1#( NUMBER )
:<!ENTITY % DAY        "CDATA">:1*2DIGIT
:<!ENTITY % MONTH      "CDATA">:"January" / "February" / ... / "December"
:<!ENTITY % YEAR       "CDATA">:4DIGIT
:<!ENTITY % URI        "CDATA">:absoluteURI
:<!ENTITY % ATEXT      "CDATA">:<printable ASCII text (no line-terminators)>
:<!ENTITY % CTEXT      "#PCDATA">:<printable ASCII text (no line-terminators)>
:<!ENTITY % TEXT       "#PCDATA">:<character data>

**rfc 要素

:内容:(front,middle,back?)
:内容:(front,ja:front?,middle,back?) [JA]

:number:%NUMBER; #IMPLIED
:obsoletes:%NUMBERS;          ""
:updates:%NUMBERS;          ""
:category:(std|bcp|info|exp|historic)       "info"
:seriesNo:%NUMBER;           #IMPLIED
:ipr:(full2026|noDerivativeWorks2026|none)   #IMPLIED
:docName:%ATEXT;            #IMPLIED
:ja:workgroup:%TEXT; "Network Working Group" -- 作業部会名 --

**front 要素

   <!ELEMENT front       (title,author+,date,area*,workgroup*,keyword*,
                          abstract?,note*)>
   <!ELEMENT title       (%CTEXT;)>
   <!ATTLIST title
             abbrev      %ATEXT;            #IMPLIED>

   <!ELEMENT author      (organization,address?)>
   <!ATTLIST author

             initials    %ATEXT;            #IMPLIED
             surname     %ATEXT;            #IMPLIED
             fullname    %ATEXT;            #IMPLIED>

   <!ELEMENT organization
                         (%CTEXT;)>
   <!ATTLIST organization
             abbrev      %ATEXT;            #IMPLIED>

   <!ELEMENT address     (postal?,phone?,facsimile?,email?,uri?)>

   <!-- at most one of each the city, region, code, and country
        elements may be present -->
   <!ELEMENT postal      (street+,(city|region|code|country)*)>
   <!ELEMENT street      (%CTEXT;)>
   <!ELEMENT city        (%CTEXT;)>
   <!ELEMENT region      (%CTEXT;)>
   <!ELEMENT code        (%CTEXT;)>
   <!ELEMENT country     (%CTEXT;)>
   <!ELEMENT phone       (%CTEXT;)>
   <!ELEMENT facsimile   (%CTEXT;)>
   <!ELEMENT email       (%CTEXT;)>
   <!ELEMENT uri         (%CTEXT;)>

   <!ELEMENT date        EMPTY>
   <!ATTLIST date
             day         %DAY;              #IMPLIED
             month       %MONTH;            #REQUIRED
             year        %YEAR;             #REQUIRED>

   <!-- meta-data... -->
   <!ELEMENT area        (%CTEXT;)>
   <!ELEMENT workgroup   (%CTEXT;)>
   <!ELEMENT keyword     (%CTEXT;)>

   <!ELEMENT abstract    (t)+>
   <!ELEMENT note        (t)+>
   <!ATTLIST note
             title       %ATEXT;            #REQUIRED>


   <!--
     The body
     -->


   <!ELEMENT middle      (section)+>

   <!ELEMENT section     (t|figure|section)*>
   <!ATTLIST section
             anchor      ID                 #IMPLIED
             title       %ATEXT;            #REQUIRED>

   <!ELEMENT t           (%TEXT;|list|figure|xref|eref|iref|vspace)*>
   <!ATTLIST t
             hangText    %ATEXT;            #IMPLIED>

   <!-- the value of the style attribute is inherited from the closest
        parent -->
   <!ELEMENT list        (t+)>
   <!ATTLIST list
             style       (numbers|symbols|hanging|empty)
                                            "empty">

   <!ELEMENT xref        (%CTEXT;)>
   <!ATTLIST xref
             target      IDREF              #REQUIRED
             pageno      (true|false)       "false">

   <!ELEMENT eref        (%CTEXT;)>
   <!ATTLIST eref
             target      %URI;              #REQUIRED>

   <!ELEMENT iref        EMPTY>
   <!ATTLIST iref
             item        %ATEXT;            #REQUIRED
             subitem     %ATEXT;            "">

   <!ELEMENT vspace      EMPTY>
   <!ATTLIST vspace
             blankLines  %NUMBER;           "0">

   <!ELEMENT figure      (preamble?,artwork,postamble?)>
   <!ATTLIST figure
             anchor      ID                 #IMPLIED
             title       %ATEXT;            "">

   <!ELEMENT preamble    (%TEXT;|xref|eref|iref)*>
   <!ELEMENT artwork     (%TEXT;)*>
   <!ATTLIST artwork
             xml:space   (default|preserve) "preserve">
   <!ELEMENT postamble   (%TEXT;|xref|eref|iref)*>


   <!--
     Back matter
     -->

   <!-- sections, if present, are appendices -->
   <!ELEMENT back        (references?,section*)>

   <!ELEMENT references  (reference+)>
   <!ELEMENT reference   (front,seriesInfo*)>
   <!ATTLIST reference
             anchor      ID                 #IMPLIED
             target      %URI;              #IMPLIED>
   <!ELEMENT seriesInfo  EMPTY>
   <!ATTLIST seriesInfo
             name        %ATEXT;            #REQUIRED
             value       %ATEXT;            #REQUIRED>

** RFC の改訂

[13] [CITE@en[Writing I-Ds and RFCs using XML (revised)]] ([CODE[2007-01-18 01:37:56 +09:00]] 版) <http://xml.resource.org/authoring/draft-mrose-writing-rfcs.html>

[14] [CITE@en[Transforming RFC2629-formatted XML through XSLT]] ([CODE[2007-07-23 05:30:42 +09:00]] 版) <http://greenbytes.de/tech/webdav/rfc2629xslt/rfc2629xslt.html>

[15] [CITE@en[Transforming RFC2629-formatted XML through XSLT]]
([TIME[2009-10-07 23:39:41 +09:00]] 版)
<http://greenbytes.de/tech/webdav/rfc2629xslt/rfc2629xslt.html#extensions>

[16] [CODE(XMLe)@en[[[pfield]]]] [[要素]]が [[RFC 5241]]
で定義されています。

;; [CITE@en[RFC 5241 - Naming Rights in IETF Protocols]] ([TIME[2011-05-02 05:39:15 +09:00]] 版) <http://tools.ietf.org/html/rfc5241#section-16>

[17] [CITE@en[RFC 7749 - The "xml2rfc" Version 2 Vocabulary]]
([TIME[2016-02-04 22:54:51 +09:00]] 版)
<https://tools.ietf.org/html/rfc7749>

* メモ

[18] <http://xml.resource.org/>

[19] ''Index of /authoring/bibxml'' <http://xml.resource.org/authoring/bibxml/>

[2] ''Index of /public/rfc/xml'' <http://xml.resource.org/public/rfc/xml/> [[RFC2629]] 方式で書かれた RFCs

[3] ''xml2rfc'' <http://xml.resource.org/>

[4] [CODE(XML)[rfc]] 処理指令の擬似属性一覧 : ''The README file: xml2rfc v1.21'' <http://xml.resource.org/authoring/README.html#rfc.section.4.1.1>

[5] 2629bis : ''Writing I-Ds and RFCs using XML (revised)'' <http://xml.resource.org/authoring/draft-mrose-writing-rfcs.html>

[6] >>2 妥当どころか[[整形式]]でさえないのが幾つかあるよん。せめてチェックくらいせんかい。。。

[7] RFC 2629 Markup language in modularized DTD : <IW:SuikaCVS:"markup/rfc/dtd/">


[20] [CITE@en[RFC 7990 - RFC Format Framework]]
([TIME[2016-12-17 02:52:43 +09:00]])
<https://tools.ietf.org/html/rfc7990>

[21] [CITE@en[RFC 7991 - The "xml2rfc" Version 3 Vocabulary]]
([TIME[2016-12-17 03:25:21 +09:00]])
<https://tools.ietf.org/html/rfc7991>

[22] [CITE@en[RFC 7998 - "xml2rfc" Version 3 Preparation Tool Description]]
([TIME[2016-12-17 02:51:34 +09:00]])
<https://tools.ietf.org/html/rfc7998>

[23] [CITE@en[cabo/kramdown-rfc2629: An RFC2629 (XML2RFC) backend for Thomas Leitner's kramdown markdown parser]]
([TIME[2017-06-16 23:45:03 +09:00]])
<https://github.com/cabo/kramdown-rfc2629>

[24] [CITE@en[rfc-format/draft-iab-xml2rfc-v3-bis: -bis document for the RFC format xml2rfc v3 draft]]
( ([TIME[2017-06-29 01:34:49 +09:00]]))
<https://github.com/rfc-format/draft-iab-xml2rfc-v3-bis>

[34] [[RFCマーク付け言語//新マーク付け言語]]