diff options
Diffstat (limited to 'doc')
-rw-r--r-- | doc/Makefile-xml2rfc | 8 | ||||
-rw-r--r-- | doc/binary-protocol-plan.txt | 66 | ||||
-rw-r--r-- | doc/protocol-binary-range.txt (renamed from doc/binary-protocol-plan-udp.txt) | 0 | ||||
-rw-r--r-- | doc/protocol-binary-range.xml (renamed from doc/binary-protocol-plan-udp.xml) | 0 | ||||
-rw-r--r-- | doc/protocol-binary.txt (renamed from doc/binary-protocol-plan-v2.txt) | 0 | ||||
-rw-r--r-- | doc/protocol-binary.xml (renamed from doc/binary-protocol-plan-v2.xml) | 2 | ||||
-rw-r--r-- | doc/xml2rfc/reference.RFC.0768.xml | 22 | ||||
-rw-r--r-- | doc/xml2rfc/rfc2629-noinc.xsl | 106 | ||||
-rw-r--r-- | doc/xml2rfc/rfc2629-other.ent | 61 | ||||
-rw-r--r-- | doc/xml2rfc/rfc2629-refchk.xsl | 81 | ||||
-rw-r--r-- | doc/xml2rfc/rfc2629-xhtml.ent | 165 | ||||
-rw-r--r-- | doc/xml2rfc/rfc2629.dtd | 304 |
12 files changed, 748 insertions, 67 deletions
diff --git a/doc/Makefile-xml2rfc b/doc/Makefile-xml2rfc new file mode 100644 index 0000000..e10cd9c --- /dev/null +++ b/doc/Makefile-xml2rfc @@ -0,0 +1,8 @@ +%.txt: %.full + xml2rfc $< $@ + +%.chk: %.xml xml2rfc/rfc2629-refchk.xsl + xsltproc xml2rfc/rfc2629-refchk.xsl $< >$@ + +%.full: %.xml xml2rfc/rfc2629-noinc.xsl + xsltproc xml2rfc/rfc2629-noinc.xsl $< >$@ diff --git a/doc/binary-protocol-plan.txt b/doc/binary-protocol-plan.txt deleted file mode 100644 index d7f0499..0000000 --- a/doc/binary-protocol-plan.txt +++ /dev/null @@ -1,66 +0,0 @@ -Notes regarding the proposed binary protocol from Facebook's hosted -memcached hackathon on 2007-07-09: - -REQUEST STRUCTURE: - - * Magic byte / version - * Cmd byte - * Key len byte (if no key, 0) - * Reserved byte (should be 0) - - * 4 byte opaque id. (will be copied back in response; means nothing to server) - - * 4 byte body length (network order; not including 12 byte header) - - [ cmd-specific fixed-width fields ] - - * key, if key length above is non-zero. - - [ cmd-specific variable-width field ] - - -RESPONSE STRUCTURE: - - * Magic byte / version (different from req's magic byte/version, to distinguish - that it's a response for, say, protocol analyzers) - * cmd byte (same as response it goes to) - * err code byte (0 on success, else errcode. hit bit set if fatal/non-normal error) - * Reserved byte (should be 0) - - * 4 byte opaque id copied back from response - - * 4 byte body length (network order; not including 12 byte header) - - [cmd-specific body] - - -COMMANDS: (for cmd byte) - - get - single key get (no more multi-get; clients should pipeline) - getq - like get, but quiet. that is, no cache miss, return nothing. - - Note: you're not guaranteed a response to a getq cache hit until - you send a non-getq command later, which uncorks the - server which bundles up IOs to send to the client in one go. - - Note: clients should implement multi-get (still important for - reducing network roundtrips!) as n pipelined requests, the - first n-1 being getq, the last being a regular - get. that way you're guaranteed to get a response, and - you know when the server's done. you can also do the naive - thing and send n pipelined gets, but then you could potentially - get back a lot of "NOT_FOUND!" error code packets. - alternatively, you can send 'n' getqs, followed by an 'echo' - or 'noop' command. - - delete - set/add/replace - - cmd-specific fixed-width fields for set/add/replace: - - * 4 byte expiration time - * 4 byte flags - (the 4 byte length is inferred from the total body length, - subtracting (keylen + body length)) - - diff --git a/doc/binary-protocol-plan-udp.txt b/doc/protocol-binary-range.txt index 7bf8d40..7bf8d40 100644 --- a/doc/binary-protocol-plan-udp.txt +++ b/doc/protocol-binary-range.txt diff --git a/doc/binary-protocol-plan-udp.xml b/doc/protocol-binary-range.xml index 9da4ec9..9da4ec9 100644 --- a/doc/binary-protocol-plan-udp.xml +++ b/doc/protocol-binary-range.xml diff --git a/doc/binary-protocol-plan-v2.txt b/doc/protocol-binary.txt index 4952559..4952559 100644 --- a/doc/binary-protocol-plan-v2.txt +++ b/doc/protocol-binary.txt diff --git a/doc/binary-protocol-plan-v2.xml b/doc/protocol-binary.xml index 29f2cb0..b5477d5 100644 --- a/doc/binary-protocol-plan-v2.xml +++ b/doc/protocol-binary.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="US-ASCII"?> -<!DOCTYPE rfc SYSTEM "rfc2629.dtd"> +<!DOCTYPE rfc SYSTEM "xml2rfc/rfc2629.dtd"> <?xml-stylesheet type='text/xsl' href='rfc2629.xslt'?> <?rfc toc="yes"?> <?rfc strict="yes"?> diff --git a/doc/xml2rfc/reference.RFC.0768.xml b/doc/xml2rfc/reference.RFC.0768.xml new file mode 100644 index 0000000..4452c34 --- /dev/null +++ b/doc/xml2rfc/reference.RFC.0768.xml @@ -0,0 +1,22 @@ +<?xml version='1.0' encoding='UTF-8'?> + +<reference anchor='RFC0768'> + +<front> +<title>User Datagram Protocol</title> +<author initials='J.' surname='Postel' fullname='J. Postel'> +<organization>University of Southern California (USC)/Information Sciences Institute</organization> +<address> +<postal> +<street>4676 Admiralty Way</street> +<city>Marina del Rey</city> +<region>CA</region> +<code>90291</code> +<country>US</country></postal> +<phone>+1 213 822 1511</phone></address></author> +<date year='1980' day='28' month='August' /></front> + +<seriesInfo name='STD' value='6' /> +<seriesInfo name='RFC' value='768' /> +<format type='TXT' octets='5896' target='ftp://ftp.isi.edu/in-notes/rfc768.txt' /> +</reference> diff --git a/doc/xml2rfc/rfc2629-noinc.xsl b/doc/xml2rfc/rfc2629-noinc.xsl new file mode 100644 index 0000000..99b73a8 --- /dev/null +++ b/doc/xml2rfc/rfc2629-noinc.xsl @@ -0,0 +1,106 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + version="1.0"> + + <xsl:output method="xml"/> + + <xsl:template name='noinc'> + <xsl:apply-templates mode='noinc'/> + </xsl:template> + + <xsl:template match="*" mode='noinc'> + <xsl:copy> + <xsl:apply-templates select='@*' mode='noinc'/> + <xsl:apply-templates mode='noinc'/> + </xsl:copy> + </xsl:template> + <xsl:template match='@*' mode='noinc'> + <xsl:attribute name='{name()}'> + <xsl:value-of select='.'/> + </xsl:attribute> + </xsl:template> + + <xsl:template match='processing-instruction("rfc")' mode='noinc'> + <xsl:choose> + <xsl:when test='substring-before(.,"=") = "include"'> + <xsl:call-template name='include-pi'> + <xsl:with-param name='include-href'> + <xsl:value-of select="translate( substring-after( ., '=' ), '" ', '' )"/><xsl:text>.xml</xsl:text> + </xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select='.'/> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template name='include-pi'> + <xsl:param name='include-href'/> + <xsl:apply-templates select="document( $include-href )" mode='noinc'/> + </xsl:template> + + <xsl:template match='dwdrfc-ref' mode='noinc'> + <xsl:param name='include-href'> + <xsl:choose> + <xsl:when test='starts-with( @src, "http://" )'> + <xsl:value-of select='@src'/> + </xsl:when> + <xsl:otherwise> + <xsl:text>http://xml.resource.org/public/rfc/</xsl:text> + <xsl:value-of select='@src'/> + <xsl:text>.xml</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:param> + <reference anchor="{@anchor}"> + <xsl:apply-templates select="document( $include-href )" mode="refrename"/> + </reference> + </xsl:template> + + <xsl:template match='*' mode='refrename'> + <xsl:apply-templates mode='refrename'/> + </xsl:template> + + <xsl:template match='reference' mode='refrename'> + <xsl:apply-templates mode='noinc'/> + </xsl:template> + + <xsl:template match='/'> + <xsl:call-template name='noinc'/> + </xsl:template> + + <xsl:template name='output'> + <xsl:param name='foo'/> + <xsl:copy-of select='$foo'/> + <xsl:apply-templates select='$foo'/> + </xsl:template> + + <xsl:template match='*' mode='output'> + <element> + <xsl:value-of select='name()'/> + <xsl:apply-templates mode='output'/> + </element> + </xsl:template> + <xsl:template match='text()' mode='output'/> + + <!-- Reference checking attributes stripped here. --> + <xsl:template match='references' mode='noinc'> + <xsl:element name='references'> + <xsl:attribute name='title'> + <xsl:value-of select='@title'/> + </xsl:attribute> + <xsl:apply-templates mode='noinc'/> + </xsl:element> + </xsl:template> + + <xsl:template match='xref' mode='noinc'> + <xsl:element name='xref'> + <xsl:attribute name='target'> + <xsl:value-of select='@target'/> + </xsl:attribute> + <xsl:apply-templates mode='noinc'/> + </xsl:element> + </xsl:template> + +</xsl:stylesheet> diff --git a/doc/xml2rfc/rfc2629-other.ent b/doc/xml2rfc/rfc2629-other.ent new file mode 100644 index 0000000..0da80b7 --- /dev/null +++ b/doc/xml2rfc/rfc2629-other.ent @@ -0,0 +1,61 @@ +<!-- rfc2629-other.ent + + Character entity set for RFC-2629 source xml documents. + There is no need to invoke this directly from + the source document itself; just invoke the DTD. + + These are unknown to (X)HTML, so any converter to these + formats must either substitute these entities + or invoke this file from the output file. + + Conversion to txt or nroff format will replace + these entities by the parenthesized text. + + Typical invocation: + <!ENTITY % rfc2629-other + PUBLIC "-//IETF//ENTITIES Other for RFC 2629//EN" + "http://xml.resource.org/authoring/rfc2629-other.ent"> + %rfc2629-other; +--> + +<!-- Magical --> +<!-- rfc.number (automatically expanded to content + of number="..." attribute + of <rfc> element, or to "XXXX") --> + +<!-- ASCII --> +<!ENTITY excl "!"><!-- U+0021 EXCLAMATION MARK ("!") --> +<!ENTITY num "#"><!-- U+0023 NUMBER SIGN ("#") --> +<!ENTITY dollar "$"><!-- U+0024 DOLLAR SIGN ("$") --> +<!ENTITY percnt "%"><!-- U+0025 PERCENT SIGN ("%") --> +<!ENTITY lpar "("><!-- U+0028 LEFT PARENTHESIS ("(") --> +<!ENTITY rpar ")"><!-- U+0029 RIGHT PARENTHESIS (")") --> +<!ENTITY ast "*"><!-- U+002A ASTERISK ("*") --> +<!ENTITY plus "+"><!-- U+002B PLUS SIGN ("+") --> +<!ENTITY comma ","><!-- U+002C COMMA (",") --> +<!ENTITY hyphen "-"><!-- U+002D HYPHEN-MINUS ("-") --> +<!ENTITY period "."><!-- U+002E FULL STOP (".") --> +<!ENTITY sol "/"><!-- U+002F SOLIDUS ("/") --> +<!ENTITY colon ":"><!-- U+003A COLON (":") --> +<!ENTITY semi ";"><!-- U+003B SEMICOLON (";") --> +<!ENTITY equals "="><!-- U+003D EQUALS SIGN ("=") --> +<!ENTITY quest "?"><!-- U+003F QUESTION MARK ("?") --> +<!ENTITY commat "@"><!-- U+0040 COMMERCIAL AT ("@") --> +<!ENTITY lsqb "["><!-- U+005B LEFT SQUARE BRACKET ("[") --> +<!ENTITY bsol "\"><!-- U+005C REVERSE SOLIDUS ("\\") --> +<!ENTITY rsqb "]"><!-- U+005D RIGHT SQUARE BRACKET ("]") --> +<!ENTITY circ "^"><!-- U+005E CIRCUMFLEX ACCENT ("^") --> +<!ENTITY lowbar "_"><!-- U+005F LOW LINE ("_") --> +<!ENTITY grave "`"><!-- U+0060 GRAVE ACCENT ("`") --> +<!ENTITY lcub "{"><!-- U+007B LEFT CURLY BRACKET ("{") --> +<!ENTITY verbar "|"><!-- U+007C VERTICAL LINE ("|") --> +<!ENTITY rcub "}"><!-- U+007D RIGHT CURLY BRACKET ("}") --> + +<!-- Useful Unicode --> +<!ENTITY Zcaron "Ž"><!-- U+017D LATIN CAPITAL LETTER Z WITH CARON ("Z") --> +<!ENTITY zcaron "ž"><!-- U+017E LATIN SMALL LETTER Z WITH CARON ("z") --> +<!ENTITY dash "‐"><!-- U+2010 HYPHEN ("-") --> +<!ENTITY nbhy "‑"><!-- U+2011 NON-BREAKING HYPHEN (special "-") --> +<!ENTITY wj "⁠"><!-- U+2060 WORD JOINER (special "") --> + +<!-- EOF --> diff --git a/doc/xml2rfc/rfc2629-refchk.xsl b/doc/xml2rfc/rfc2629-refchk.xsl new file mode 100644 index 0000000..0cea58e --- /dev/null +++ b/doc/xml2rfc/rfc2629-refchk.xsl @@ -0,0 +1,81 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + version="1.0"> + + <xsl:output method="xml"/> + + <xsl:template match='/'> + <refcheck> + <xsl:apply-templates select='//xref' mode='missing'/> + <xsl:apply-templates select='//reference' mode='orphans'/> + <xsl:apply-templates select='//references[@dwdrfc-type = "norm"]' mode='normcheck'/> + <xsl:apply-templates select='//xref[@dwdrfc-type = "norm"]' mode='normrefs'/> + </refcheck> + </xsl:template> + + <xsl:template match='xref' mode='missing'> + <xsl:param name='refname'> + <xsl:value-of select='@target'/> + </xsl:param> + <xsl:param name='reftgt'> + <xsl:value-of select='//*[@anchor = $refname]/@anchor'/> + </xsl:param> + <xsl:choose> + <xsl:when test='$reftgt = $refname'/> + <xsl:otherwise> + <missing><xsl:value-of select='$refname'/></missing><xsl:text> + </xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template match='xref' mode='normrefs'> + <xsl:param name='refname'> + <xsl:value-of select='@target'/> + </xsl:param> + <xsl:param name='reftgt'> + <xsl:value-of select='//references[@dwdrfc-type = "norm"]/*[@anchor = $refname]/@anchor'/> + </xsl:param> + <xsl:choose> + <xsl:when test='$reftgt = $refname'/> + <xsl:otherwise> + <missing-norm><xsl:value-of select='$refname'/></missing-norm><xsl:text> + </xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template match='reference' mode='orphans'> + <xsl:param name='refname'> + <xsl:value-of select='@anchor'/> + </xsl:param> + <xsl:param name='reftgt'> + <xsl:value-of select='//xref[@target = $refname]/@target'/> + </xsl:param> + <xsl:if test='$reftgt != $refname'> + <orphan><xsl:value-of select='$refname'/></orphan><xsl:text> + </xsl:text> + </xsl:if> +</xsl:template> + +<xsl:template match='references' mode='normcheck'> + <xsl:apply-templates mode='normcheck'/> +</xsl:template> + +<xsl:template match='*' mode='normcheck'> + <!-- Need to find at least one normative reference --> + <xsl:param name='refname'> + <xsl:value-of select='@anchor'/> + </xsl:param> + <xsl:param name='reftgt'> + <xsl:value-of select='//xref[@dwdrfc-type = "norm" and @target = $refname]/@target'/> + </xsl:param> + <xsl:if test='$refname != $reftgt'> + <normchk><xsl:value-of select='$refname'/></normchk><xsl:text> +</xsl:text> + </xsl:if> +</xsl:template> + +<xsl:template match='text()' mode='normcheck'/> + +</xsl:stylesheet> diff --git a/doc/xml2rfc/rfc2629-xhtml.ent b/doc/xml2rfc/rfc2629-xhtml.ent new file mode 100644 index 0000000..3d4a07d --- /dev/null +++ b/doc/xml2rfc/rfc2629-xhtml.ent @@ -0,0 +1,165 @@ +<!-- rfc2629-xhtml.ent + + Character entity set for RFC-2629 source xml documents. + There is no need to invoke this directly from + the source document itself; just invoke the DTD. + + These are known to (X)HTML, so any converter to these + formats can just leave them as is without having + to invoke this file from the output file. + + Conversion to txt or nroff format will replace + these entities by the parenthesized text. + + Typical invocation: + <!ENTITY % rfc2629-xhtml + PUBLIC "-//IETF//ENTITIES XHTML subset for RFC 2629//EN" + "http://xml.resource.org/authoring/rfc2629-xhtml.ent"> + %rfc2629-xhtml; +--> + +<!-- All of ISO Latin 1 --> +<!ENTITY nbsp " "><!-- U+00A0 NO-BREAK SPACE (special " ") --> +<!ENTITY iexcl "¡"><!-- U+00A1 INVERTED EXCLAMATION MARK ("!") --> +<!ENTITY cent "¢"><!-- U+00A2 CENT SIGN ("[cents]") --> +<!ENTITY pound "£"><!-- U+00A3 POUND SIGN ("GBP") --> +<!ENTITY curren "¤"><!-- U+00A4 CURRENCY SIGN ("[currency units]") --> +<!ENTITY yen "¥"><!-- U+00A5 YEN SIGN ("JPY") --> +<!ENTITY brvbar "¦"><!-- U+00A6 BROKEN BAR ("|") --> +<!ENTITY sect "§"><!-- U+00A7 SECTION SIGN ("S.") --> +<!ENTITY uml "¨"><!-- U+00A8 DIAERESIS ('"') --> +<!ENTITY copy "©"><!-- U+00A9 COPYRIGHT SIGN ("(C)") --> +<!ENTITY ordf "ª"><!-- U+00AA FEMININE ORDINAL INDICATOR ("a") --> +<!ENTITY laquo "«"><!-- U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK ("<<") --> +<!ENTITY not "¬"><!-- U+00AC NOT SIGN ("[not]") --> +<!ENTITY shy "­"><!-- U+00AD SOFT HYPHEN (ignored "") --> +<!ENTITY reg "®"><!-- U+00AE REGISTERED SIGN ("(R)") --> +<!ENTITY macr "¯"><!-- U+00AF MACRON ("_") --> +<!ENTITY deg "°"><!-- U+00B0 DEGREE SIGN ("o") --> +<!ENTITY plusmn "±"><!-- U+00B1 PLUS-MINUS SIGN ("+/-") --> +<!ENTITY sup2 "²"><!-- U+00B2 SUPERSCRIPT TWO ("^2") --> +<!ENTITY sup3 "³"><!-- U+00B3 SUPERSCRIPT THREE ("^3") --> +<!ENTITY acute "´"><!-- U+00B4 ACUTE ACCENT ("'") --> +<!ENTITY micro "µ"><!-- U+00B5 MICRO SIGN ("[micro]") --> +<!ENTITY para "¶"><!-- U+00B6 PILCROW SIGN ("P.") --> +<!ENTITY middot "·"><!-- U+00B7 MIDDLE DOT (".") --> +<!ENTITY cedil "¸"><!-- U+00B8 CEDILLA (",") --> +<!ENTITY sup1 "¹"><!-- U+00B9 SUPERSCRIPT ONE ("^1") --> +<!ENTITY ordm "º"><!-- U+00BA MASCULINE ORDINAL INDICATOR ("o") --> +<!ENTITY raquo "»"><!-- U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (">>") --> +<!ENTITY frac14 "¼"><!-- U+00BC VULGAR FRACTION ONE QUARTER ("1/4") --> +<!ENTITY frac12 "½"><!-- U+00BD VULGAR FRACTION ONE HALF ("1/2") --> +<!ENTITY frac34 "¾"><!-- U+00BE VULGAR FRACTION THREE QUARTERS ("3/4") --> +<!ENTITY iquest "¿"><!-- U+00BF INVERTED QUESTION MARK ("?") --> +<!ENTITY Agrave "À"><!-- U+00C0 LATIN CAPITAL LETTER A WITH GRAVE ("A") --> +<!ENTITY Aacute "Á"><!-- U+00C1 LATIN CAPITAL LETTER A WITH ACUTE ("A") --> +<!ENTITY Acirc "Â"><!-- U+00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX ("A") --> +<!ENTITY Atilde "Ã"><!-- U+00C3 LATIN CAPITAL LETTER A WITH TILDE ("A") --> +<!ENTITY Auml "Ä"><!-- U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS ("Ae") --> +<!ENTITY Aring "Å"><!-- U+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE ("Ae") --> +<!ENTITY AElig "Æ"><!-- U+00C6 LATIN CAPITAL LETTER AE ("AE") --> +<!ENTITY Ccedil "Ç"><!-- U+00C7 LATIN CAPITAL LETTER C WITH CEDILLA ("C") --> +<!ENTITY Egrave "È"><!-- U+00C8 LATIN CAPITAL LETTER E WITH GRAVE ("E") --> +<!ENTITY Eacute "É"><!-- U+00C9 LATIN CAPITAL LETTER E WITH ACUTE ("E") --> +<!ENTITY Ecirc "Ê"><!-- U+00CA LATIN CAPITAL LETTER E WITH CIRCUMFLEX ("E") --> +<!ENTITY Euml "Ë"><!-- U+00CB LATIN CAPITAL LETTER E WITH DIAERESIS ("E") --> +<!ENTITY Igrave "Ì"><!-- U+00CC LATIN CAPITAL LETTER I WITH GRAVE ("I") --> +<!ENTITY Iacute "Í"><!-- U+00CD LATIN CAPITAL LETTER I WITH ACUTE ("I") --> +<!ENTITY Icirc "Î"><!-- U+00CE LATIN CAPITAL LETTER I WITH CIRCUMFLEX ("I") --> +<!ENTITY Iuml "Ï"><!-- U+00CF LATIN CAPITAL LETTER I WITH DIAERESIS ("I") --> +<!ENTITY ETH "Ð"><!-- U+00D0 LATIN CAPITAL LETTER ETH ("[ETH]") --> +<!ENTITY Ntilde "Ñ"><!-- U+00D1 LATIN CAPITAL LETTER N WITH TILDE ("N") --> +<!ENTITY Ograve "Ò"><!-- U+00D2 LATIN CAPITAL LETTER O WITH GRAVE ("O") --> +<!ENTITY Oacute "Ó"><!-- U+00D3 LATIN CAPITAL LETTER O WITH ACUTE ("O") --> +<!ENTITY Ocirc "Ô"><!-- U+00D4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX ("O") --> +<!ENTITY Otilde "Õ"><!-- U+00D5 LATIN CAPITAL LETTER O WITH TILDE ("O") --> +<!ENTITY Ouml "Ö"><!-- U+00D6 LATIN CAPITAL LETTER O WITH DIAERESIS ("Oe") --> +<!ENTITY times "×"><!-- U+00D7 MULTIPLICATION SIGN ("x") --> +<!ENTITY Oslash "Ø"><!-- U+00D8 LATIN CAPITAL LETTER O WITH STROKE ("Oe") --> +<!ENTITY Ugrave "Ù"><!-- U+00D9 LATIN CAPITAL LETTER U WITH GRAVE ("U") --> +<!ENTITY Uacute "Ú"><!-- U+00DA LATIN CAPITAL LETTER U WITH ACUTE ("U") --> +<!ENTITY Ucirc "Û"><!-- U+00DB LATIN CAPITAL LETTER U WITH CIRCUMFLEX ("U") --> +<!ENTITY Uuml "Ü"><!-- U+00DC LATIN CAPITAL LETTER U WITH DIAERESIS ("Ue") --> +<!ENTITY Yacute "Ý"><!-- U+00DD LATIN CAPITAL LETTER Y WITH ACUTE ("Y") --> +<!ENTITY THORN "Þ"><!-- U+00DE LATIN CAPITAL LETTER THORN ("[THORN]") --> +<!ENTITY szlig "ß"><!-- U+00DF LATIN SMALL LETTER SHARP S ("ss") --> +<!ENTITY agrave "à"><!-- U+00E0 LATIN SMALL LETTER A WITH GRAVE ("a") --> +<!ENTITY aacute "á"><!-- U+00E1 LATIN SMALL LETTER A WITH ACUTE ("a") --> +<!ENTITY acirc "â"><!-- U+00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX ("a") --> +<!ENTITY atilde "ã"><!-- U+00E3 LATIN SMALL LETTER A WITH TILDE ("a") --> +<!ENTITY auml "ä"><!-- U+00E4 LATIN SMALL LETTER A WITH DIAERESIS ("ae") --> +<!ENTITY aring "å"><!-- U+00E5 LATIN SMALL LETTER A WITH RING ABOVE ("ae") --> +<!ENTITY aelig "æ"><!-- U+00E6 LATIN SMALL LETTER AE ("ae") --> +<!ENTITY ccedil "ç"><!-- U+00E7 LATIN SMALL LETTER C WITH CEDILLA ("c") --> +<!ENTITY egrave "è"><!-- U+00E8 LATIN SMALL LETTER E WITH GRAVE ("e") --> +<!ENTITY eacute "é"><!-- U+00E9 LATIN SMALL LETTER E WITH ACUTE ("e") --> +<!ENTITY ecirc "ê"><!-- U+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX ("e") --> +<!ENTITY euml "ë"><!-- U+00EB LATIN SMALL LETTER E WITH DIAERESIS ("e") --> +<!ENTITY igrave "ì"><!-- U+00EC LATIN SMALL LETTER I WITH GRAVE ("i") --> +<!ENTITY iacute "í"><!-- U+00ED LATIN SMALL LETTER I WITH ACUTE ("i") --> +<!ENTITY icirc "î"><!-- U+00EE LATIN SMALL LETTER I WITH CIRCUMFLEX ("i") --> +<!ENTITY iuml "ï"><!-- U+00EF LATIN SMALL LETTER I WITH DIAERESIS ("i") --> +<!ENTITY eth "ð"><!-- U+00F0 LATIN SMALL LETTER ETH ("[eth]") --> +<!ENTITY ntilde "ñ"><!-- U+00F1 LATIN SMALL LETTER N WITH TILDE ("n") --> +<!ENTITY ograve "ò"><!-- U+00F2 LATIN SMALL LETTER O WITH GRAVE ("o") --> +<!ENTITY oacute "ó"><!-- U+00F3 LATIN SMALL LETTER O WITH ACUTE ("o") --> +<!ENTITY ocirc "ô"><!-- U+00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX ("o") --> +<!ENTITY otilde "õ"><!-- U+00F5 LATIN SMALL LETTER O WITH TILDE ("o") --> +<!ENTITY ouml "ö"><!-- U+00F6 LATIN SMALL LETTER O WITH DIAERESIS ("oe") --> +<!ENTITY divide "÷"><!-- U+00F7 DIVISION SIGN ("/") --> +<!ENTITY oslash "ø"><!-- U+00F8 LATIN SMALL LETTER O WITH STROKE ("oe") --> +<!ENTITY ugrave "ù"><!-- U+00F9 LATIN SMALL LETTER U WITH GRAVE ("u") --> +<!ENTITY uacute "ú"><!-- U+00FA LATIN SMALL LETTER U WITH ACUTE ("u") --> +<!ENTITY ucirc "û"><!-- U+00FB LATIN SMALL LETTER U WITH CIRCUMFLEX ("u") --> +<!ENTITY uuml "ü"><!-- U+00FC LATIN SMALL LETTER U WITH DIAERESIS ("ue") --> +<!ENTITY yacute "ý"><!-- U+00FD LATIN SMALL LETTER Y WITH ACUTE ("y") --> +<!ENTITY thorn "þ"><!-- U+00FE LATIN SMALL LETTER THORN ("[thorn]") --> +<!ENTITY yuml "ÿ"><!-- U+00FF LATIN SMALL LETTER Y WITH DIAERESIS ("y") --> + +<!-- Some of ISO Latin 9 and 10 --> +<!ENTITY OElig "Œ"><!-- U+0152 LATIN CAPITAL LIGATURE OE ("OE") --> +<!ENTITY oelig "œ"><!-- U+0153 LATIN SMALL LIGATURE OE ("oe") --> +<!ENTITY Scaron "Š"><!-- U+0160 LATIN CAPITAL LETTER S WITH CARON ("S") --> +<!ENTITY scaron "š"><!-- U+0161 LATIN SMALL LETTER S WITH CARON ("s") --> +<!ENTITY Yuml "Ÿ"><!-- U+0178 LATIN CAPITAL LETTER Y WITH DIAERESIS ("Y") --> + +<!-- Other Unicode (including some characters from the windows-1252 repertoire) --> +<!ENTITY fnof "ƒ"><!-- U+0192 LATIN SMALL LETTER F WITH HOOK ("f") --> +<!ENTITY tilde "˜"><!-- U+02DC SMALL TILDE ("~") --> +<!ENTITY ensp " "><!-- U+2002 EN SPACE (" ") --> +<!ENTITY emsp " "><!-- U+2003 EM SPACE (" ") --> +<!ENTITY thinsp " "><!-- U+2009 THIN SPACE (" ") --> +<!ENTITY ndash "–"><!-- U+2013 EN DASH ("-") --> +<!ENTITY mdash "—"><!-- U+2014 EM DASH ("-\u002D") --> +<!ENTITY lsquo "‘"><!-- U+2018 LEFT SINGLE QUOTATION MARK ("'") --> +<!ENTITY rsquo "’"><!-- U+2019 RIGHT SINGLE QUOTATION MARK ("'") --> +<!ENTITY sbquo "‚"><!-- U+201A SINGLE LOW-9 QUOTATION MARK ("'") --> +<!ENTITY ldquo "“"><!-- U+201C LEFT DOUBLE QUOTATION MARK ('"') --> +<!ENTITY rdquo "”"><!-- U+201D RIGHT DOUBLE QUOTATION MARK ('"') --> +<!ENTITY bdquo "„"><!-- U+201E DOUBLE LOW-9 QUOTATION MARK ('"') --> +<!ENTITY dagger "†"><!-- U+2020 DAGGER ("*!*") --> +<!ENTITY Dagger "‡"><!-- U+2021 DOUBLE DAGGER ("*!!*") --> +<!ENTITY bull "•"><!-- U+2022 BULLET ("o") --> +<!ENTITY hellip "…"><!-- U+2026 HORIZONTAL ELLIPSIS ("...") --> +<!ENTITY permil "′"><!-- U+2030 PER MILLE SIGN ("[/1000]") --> +<!ENTITY prime "′"><!-- U+2032 PRIME ("'") --> +<!ENTITY Prime "″"><!-- U+2033 DOUBLE PRIME ('"') --> +<!ENTITY lsaquo "‹"><!-- U+2039 SINGLE LEFT-POINTING ANGLE QUOTATION MARK ("<") --> +<!ENTITY rsaquo "›"><!-- U+203A SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (">") --> +<!ENTITY frasl "⁄"><!-- U+2044 FRACTION SLASH ("/") --> +<!ENTITY euro "€"><!-- U+20AC EURO SIGN ("EUR") --> +<!ENTITY trade "™"><!-- U+2122 TRADE MARK SIGN ("[TM]") --> +<!ENTITY larr "←"><!-- U+2190 LEFTWARDS ARROW ("<-\u002D") --> +<!ENTITY rarr "→"><!-- U+2192 RIGHTWARDS ARROW ("\u002D->") --> +<!ENTITY harr "↔"><!-- U+2194 LEFT RIGHT ARROW ("<->") --> +<!ENTITY lArr "⇐"><!-- U+21D0 LEFTWARDS DOUBLE ARROW ("<==") --> +<!ENTITY rArr "⇒"><!-- U+21D2 RIGHTWARDS DOUBLE ARROW ("==>") --> +<!ENTITY hArr "⇔"><!-- U+21D4 LEFT RIGHT DOUBLE ARROW ("<=>") --> +<!ENTITY minus "−"><!-- U+2212 MINUS SIGN ("-") --> +<!ENTITY lowast "∗"><!-- U+2217 ASTERISK OPERATOR ("*") --> +<!ENTITY le "≤"><!-- U+2264 LESS-THAN OR EQUAL TO ("<=") --> +<!ENTITY ge "≥"><!-- U+2265 GREATER-THAN OR EQUAL TO (">=") --> +<!ENTITY lang "〈"><!-- U+2329 LEFT-POINTING ANGLE BRACKET ("<") --> +<!ENTITY rang "〉"><!-- U+232A RIGHT-POINTING ANGLE BRACKET (">") --> + +<!-- EOF --> diff --git a/doc/xml2rfc/rfc2629.dtd b/doc/xml2rfc/rfc2629.dtd new file mode 100644 index 0000000..bc30260 --- /dev/null +++ b/doc/xml2rfc/rfc2629.dtd @@ -0,0 +1,304 @@ +<!-- + revised DTD for the RFC document series, draft of 2007-03-29 + --> + + +<!-- + Typical invocation: + <!DOCTYPE rfc PUBLIC "-//IETF//DTD RFC 2629//EN" + "http://xml.resource.org/authoring/rfc2629.dtd" [ + ... dtd subset ... + ]> + or + <!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ + ... dtd subset ... + ]> + --> + + +<!-- + Contents + + Character entities + + DTD data types + + The top-level + + Front matter + + The Body + + Back matter + --> + + +<!-- + Character entities + --> + + +<!ENTITY % rfc2629-xhtml + PUBLIC "-//IETF//ENTITIES XHTML subset for RFC 2629//EN" + "rfc2629-xhtml.ent"> +%rfc2629-xhtml; + +<!ENTITY % rfc2629-other + PUBLIC "-//IETF//ENTITIES Other for RFC 2629//EN" + "rfc2629-other.ent"> +%rfc2629-other; + + +<!-- + DTD data types: + + entity description + ====== =============================================== + NUMBER [0-9]+ + NUMBERS a comma-separated list of NUMBER + + DAY the day of the month, e.g., "1" + MONTH the month of the year, e.g., "January" + YEAR a four-digit year, e.g., "1999" + + URI e.g., "http://invisible.net/" + + ATEXT/CTEXT printable ASCII text (no line-terminators) + + TEXT character data + --> + + +<!ENTITY % NUMBER "CDATA"> +<!ENTITY % NUMBERS "CDATA"> + +<!ENTITY % DAY "CDATA"> +<!ENTITY % MONTH "CDATA"> +<!ENTITY % YEAR "CDATA"> + +<!ENTITY % URI "CDATA"> + +<!ENTITY % ATEXT "CDATA"> +<!ENTITY % CTEXT "#PCDATA"> + +<!ENTITY % TEXT "#PCDATA"> + +<!ENTITY rfc.number "XXXX"> + + +<!-- + The top-level + --> + + +<!-- + attributes for the "rfc" element are supplied by the RFC + editor. when preparing drafts, authors should leave them blank. + + the "seriesNo" attribute is used if the category is, e.g., BCP. + --> +<!ELEMENT rfc (front,middle,back?)> +<!ATTLIST rfc + number %NUMBER; #IMPLIED + obsoletes %NUMBERS; "" + updates %NUMBERS; "" + category (std|bcp|info|exp|historic) + #IMPLIED + seriesNo %NUMBER; #IMPLIED + ipr (full2026|noDerivativeWorks2026|none + |full3667|noModification3667|noDerivatives3667 + |full3978|noModification3978|noDerivatives3978) + #IMPLIED + iprExtract IDREF #IMPLIED + submissionType + (IETF|independent) "IETF" + docName %ATEXT; #IMPLIED + xml:lang %ATEXT; "en"> + + +<!-- + Front matter + --> + + +<!ELEMENT front (title,author+,date,area*,workgroup*,keyword*, + abstract?,note*)> + +<!-- the "abbrev" attribute is used for headers, etc. --> +<!ELEMENT title (%CTEXT;)> +<!ATTLIST title + abbrev %ATEXT; #IMPLIED> + +<!ELEMENT author (organization,address?)> +<!ATTLIST author + initials %ATEXT; #IMPLIED + surname %ATEXT; #IMPLIED + fullname %ATEXT; #IMPLIED + role (editor) #IMPLIED> + +<!ELEMENT organization + (%CTEXT;)> +<!ATTLIST organization + abbrev %ATEXT; #IMPLIED> + +<!ELEMENT address (postal?,phone?,facsimile?,email?,uri?)> + +<!-- this content model should be more strict: + 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; #IMPLIED + year %YEAR; #IMPLIED> + +<!-- meta-data... --> +<!ELEMENT area (%CTEXT;)> +<!ELEMENT workgroup (%CTEXT;)> +<!ELEMENT keyword (%CTEXT;)> + +<!ELEMENT abstract (t)+> +<!ELEMENT note (t)+> +<!ATTLIST note + title %ATEXT; #REQUIRED> + + +<!-- + The body + --> + + +<!-- later on, may be (section+,appendix*,section*) --> +<!ELEMENT middle (section+)> + +<!ELEMENT section ((t|figure|texttable|iref)*,section*)> +<!ATTLIST section + anchor ID #IMPLIED + title %ATEXT; #REQUIRED + toc (include|exclude|default) + "default"> + +<!-- +<!ELEMENT appendix ((t|figure|texttable|iref)*,appendix*)> +<!ATTLIST appendix + anchor ID #IMPLIED + title %ATEXT; #REQUIRED + toc (include|exclude|default) + "default"> + --> + +<!-- use of <figure/> is deprecated... --> +<!ELEMENT t (%TEXT;|list|figure|xref|eref|iref|cref|spanx|vspace)*> +<!ATTLIST t + anchor ID #IMPLIED + hangText %ATEXT; #IMPLIED> + +<!-- the value of the style attribute is inherited from the closest + parent --> +<!ELEMENT list (t+)> +<!ATTLIST list + style %ATEXT; #IMPLIED + hangIndent %NUMBER; #IMPLIED + counter %ATEXT; #IMPLIED> + +<!ELEMENT xref (%CTEXT;)> +<!ATTLIST xref + target IDREF #REQUIRED + pageno (true|false) "false" + format (counter|title|none|default) + "default"> + +<!ELEMENT eref (%CTEXT;)> +<!ATTLIST eref + target %URI; #REQUIRED> + +<!ELEMENT iref EMPTY> +<!ATTLIST iref + item %ATEXT; #REQUIRED + subitem %ATEXT; "" + primary (true|false) "false"> + +<!ELEMENT cref (%CTEXT;)> +<!ATTLIST cref + anchor ID #IMPLIED + source %ATEXT; #IMPLIED> + +<!ELEMENT spanx (%CTEXT;)> +<!ATTLIST spanx + style %ATEXT; "emph"> + +<!ELEMENT vspace EMPTY> +<!ATTLIST vspace + blankLines %NUMBER; "0"> + +<!ELEMENT figure (iref*,preamble?,artwork,postamble?)> +<!ATTLIST figure + anchor ID #IMPLIED + title %ATEXT; "" + src %URI; #IMPLIED + align (left|center|right) "left" + alt %ATEXT; "" + width %ATEXT; "" + height %ATEXT; ""> + +<!ELEMENT preamble (%TEXT;|xref|eref|iref|cref|spanx)*> +<!ELEMENT artwork (%TEXT;)*> +<!ATTLIST artwork + xml:space (default|preserve) "preserve" + name %ATEXT; "" + type %ATEXT; "" + src %URI; #IMPLIED + align (left|center|right) "left" + alt %ATEXT; "" + width %ATEXT; "" + height %ATEXT; ""> + +<!ELEMENT postamble (%TEXT;|xref|eref|iref|cref|spanx)*> + +<!ELEMENT texttable (preamble?,ttcol+,c*,postamble?)> +<!ATTLIST texttable + anchor ID #IMPLIED + title %ATEXT; ""> +<!ELEMENT ttcol (%CTEXT;)> +<!ATTLIST ttcol + width %ATEXT; #IMPLIED + align (left|center|right) "left"> +<!ELEMENT c (%TEXT;|xref|eref|iref|cref|spanx)*> + + +<!-- + Back matter + --> + + +<!-- sections, if present, are appendices --> +<!ELEMENT back (references*,section*)> + +<!ELEMENT references (reference+)> +<!ATTLIST references + title %ATEXT; "References"> +<!ELEMENT reference (front,seriesInfo*,format*,annotation*)> +<!ATTLIST reference + anchor ID #IMPLIED + target %URI; #IMPLIED> +<!ELEMENT seriesInfo EMPTY> +<!ATTLIST seriesInfo + name %ATEXT; #REQUIRED + value %ATEXT; #REQUIRED> +<!ELEMENT format EMPTY> +<!ATTLIST format + target %URI; #IMPLIED + type %ATEXT; #REQUIRED + octets %NUMBER; #IMPLIED> +<!ELEMENT annotation (%TEXT;|xref|eref|iref|cref|spanx)*> |