RFC  2629
 Indice 
Network Working GroupM. Rose
Petición de Comentarios: 2629Invisible Worlds, Inc.
Categoría: InformativoJunio 1999

Cómo escribir I-D y RFC con XML

Estado de este memorándum

Este documento proporciona información para la comunidad Internet. No es la especificación de ningún estándar de Internet. La distribución de este memorándum no está limitada.

Nota de Copyright

Copyright (C) The Internet Society (1999). Todos los derechos reservados.

Resumen

Aquí se presenta una técnica para usar XML ('Extensible Markup Language') como formato fuente para los documentos de las series Borradores-Internet ('Internet-Drafts', I-D) y Petición de Comentarios ('Request For Comments', RFC).


 RFC  2629
 Indice 

Indice




 Indice 

1. Introducción

Este documento describe cómo escribir un documento para las series I-D y RFC usando el Lenguaje de Marcado Extensible[1] (XML, Extensible Markup Language). Este documento tiene tres objetivos:

  1. Describir una Definición de tipo de documento XML (DTD) que sea adecuada para expresar los sencillos requerimientos de formato de los documentos RFC y que al mismo tiempo permita un marcado comprensible con cualidades descriptivas.
  2. Describir el software que procesa los archivos fuente XML, incluida una herramienta que produce documentos conformes al RFC 2223[2], formato HTML, etc...
  3. Proporcionar un ejemplo para los dos primeros objetivos (este documento fue escrito usando dicha DTD y producido con el software mencionado).

La discusión sobre las ramificaciones políticas derivadas del uso de XML como formato fuente para documentos RFC queda fuera del alcance de este documento. Simplemente se hace destacar que la adición de un mínimo de marcado al texto plano:



 Indice 

2. Cómo usar la DTD para escribir I-D y RFC

No vamos a proporcionar aquí una descripción formal o comprensiva de XML. En esta sección trataremos de lo mínimo imprescindible de XML para poder usar una Definición de tipo de documento (DTD) para escribir documentos RFC.

Si ya conoce XML, pase al La DTD RFC para examinar la DTD.

2.1 Conceptos básicos de XML

Existen muy pocas reglas a la hora de escribir en XML, ya que la sintaxis es simple. Hay cinco términos que necesitará conocer:

  1. Un "elemento" se refiere normalmente a una etiqueta inicial, una etiqueta de final y a todos los caracteres entre ambas, p. ej., "<ejemplo>texto y/o elementos anidados</ejemplo>"
  2. Un "elemento vacío" combina la etiqueta inicial y la final, p. ej., "<vacio/>". Este tipo de elementos no existe en HTML.
  3. Un "atributo" es parte de un elemento. Si está presente, aparece en la etiqueta inicial, p. ej., "<ejemplo nombre='valor'>". Por supuesto también pueden aparecer en elementos vacíos, p. ej., "<vacio nombre='valor'/>".
  4. Una "entidad" es una macro textual que comienza con "&". No se preocupe por ellas, pues sólo las usará cuando tenga que escribir un símbolo "&" o "<" en su texto.
  5. Un "símbolo" es una cadena de caracteres. El primer carácter es una letra o un guión bajo ("_"). Los demás caracteres pueden ser letras, números, un guión bajo o un punto (".").

Lo primero es comenzar el archivo fuente con una declaración XML, una referencia a la DTD y el elemento "rfc":

    <?xml version="1.0"?>
    <!DOCTYPE rfc SYSTEM "rfc2629.dtd">
    <rfc>
        ...
    </rfc>

Ignore las dos primeras líneas (la declaración y la referencia) y trátelas como si fueran incomprensibles. No debe aparecer nada a continuación de la etiqueta "</rfc>".

En segundo lugar, asegúrese de que todos los elementos están correctamente emparejados y anidados. Un elemento correctamente emparejado que comience con "<ejemplo>" aparecerá eventualmente seguido de "</ejemplo>" (los elementos vacíos siempre están emparejados). Los elementos están correctamente anidados cuando no se solapan.

Por ejemplo,

    <exterior>
        ...
        <interior>
            ...
        </interior>
        ...
    </exterior>

está correctamente anidado.

Sin embargo,

    <exterior>
        ...
        <interior>
            ...
        </exterior>
        ...
    </interior>

se solapa y por tanto los elementos no están correctamente anidados.

En tercer lugar, nunca utilice "<" o "&" en su texto. En su lugar, use "<" o "&amp;", respectivamente.

En cuarto lugar, existen dos caracteres de entrecomillado en XML: 'apóstrofe' y "comilla". Asegúrese de que todos los valores de atributo están entrecomillados, p. ej., "<ejemplo nombre='valor'>". Si el valor contiene alguno de los caracteres de entrecomillado, use el otro carácter para entrecomillarlo, p. ej., "<ejemplo nombre='"'>". Si contiene ambos caracteres, utilice uno de ellos para entrecomillar el valor y sustituya todas las ocurrencias de dicho carácter en el valor del atributo con '&apos;' para el apóstrofe o "&quot;" para las comillas, p. ej., "<ejemplo nombre='"&apos;"'>".

Si desea poner un comentario en su archivo fuente, esta es la sintaxis:

        <!-- Los comentarios pueden ser de varias líneas,
            si lo desea -->

Y por último, comentar que XML distingue entre mayúsculas y minúsculas.

2.2 Elementos iniciales

A continuación de la etiqueta "<rfc>" aparece el elemento "front":

    <?xml version="1.0"?>
    <!DOCTYPE rfc SYSTEM "rfc2629.dtd">
    <rfc>
        <front>
            <title ...>
            <author ...>
            <author ...>
            <date ...>
            <area ...>
            <workgroup ...>
            <keyword ...>
            <keyword ...>
            <abstract ...>
            <note ...>
        </front>
        ...
    </rfc>

(Nótese que en todos los ejemplos la tabulación aparece únicamente por motivos de claridad).

El elemento "front" está formado por un elemento "title", uno o más elementos "author", un elemento "date", uno o más elementos "area" opcionales, uno o más elementos "workgroup" opcionales, uno o más elementos "keyword" opcionales, un elemento "abstract" opcional y uno o más elementos "note" opcionales.

2.2.1 El elemento 'title'

El elemento 'title' representa el título del documento. Dado que el título aparecerá en las cabeceras de página cuando el documento sea formateado de acuerdo con [2], si tiene más de 42 caracteres se deberá incluir una abreviatura, p. ej.,

     <title abbrev="Mucho ruido y pocas nueces">
    El debate IETF sobre "El formato fuente de los documentos RFC"
    </title>

2.2.2 El elemento 'author'

Cada elemento 'author' representa a uno de los autores del documento. Como puede existir más de un autor, puede aparecer más de un elemento "author". Si el autor es una persona deberán aparecer tres atributos en la etiqueta "<author>": "initials", "surname" y "fullname", p. ej.,

    <author initials="M.T." surname="Rose"
            fullname="Marshall T. Rose">

El elemento 'author' contiene un elemento 'organization' y un elemento 'adress' opcional.

El elemento "organization" es parecido al elemento "title", ya que se puede incluir una abreviatura junto al nombre completo de la organización usando el atributo "abbrev", p. ej.,

    <organization abbrev="ISI">
        USC/Information Sciences Institute
    </organization>

El elemento "adress" está formado a su vez por un elemento "postal" opcional, un elemento "phone" opcional, un elemento "facsimile" opcional, un elemento "email" opcional y un elemento "uri" opcional.

El elemento "postal" contiene uno o más elementos "street", seguidos de cualquier combinación de los elementos "city", "region" (estado o provincia), "code" (codigo postal o 'zipcode') y "country", p. ej.,

    <postal>
        <street>660 York Street</street>
        <street>M/S 40</street>
        <city>San Francisco</city> <region>CA</region>
        <code>94110</code>
        <country>US</country>
    </postal>

Esta flexibilidad permite distintos formatos nacionales para las direcciones postales. Nótese sin embargo que aunque no se especifica el orden de los elementos "city", "region", "code" y "country", como máximo puede aparecer uno de cada uno. Además de ésto, los elementos no deben ser reordenados durante el procesamiento mediante una aplicación XML (es decir, las aplicaciones de presentación deben preservar el orden de la información contenida en estos elementos). Finalmente, el valor del elemento "country" debe ser un código de dos letras ISO 3166.

Los elementos "phone", "facsimile", "email y "uri" son sencillos, p. ej.,

    <phone>+1 415 695 3975</phone>
    <email>[email protected]</email>
    <uri>http://invisible.net/</uri>

2.2.3 El elemento 'date'

El elemento "date" indica la fecha de publicación del documento. Está formado por un mes y un año, p. ej.,

    <date month="Febrero" year="1999" />

El elemento "date" también incluye un atributo opcional "day".

2.2.4 Elementos de metadatos

El elemento "front" puede contener metadatos (cuyo contenido no aparece en las versiones impresas del documento).

Un documento tiene uno o más elementos opcionales "area", "workgroup" y "keyword", p. ej.,

    <area>General</area>
    <workgroup>Grupo de trabajo de embellecimiento de RFC</workgroup>
    <keyword>RFC</keyword>
    <keyword>Request for Comments</keyword>
    <keyword>Petición de Comentarios</keyword>
    <keyword>I-D</keyword>
    <keyword>Internet-Draft</keyword>
    <keyword>Borrador de Internet</keyword>
    <keyword>XML</keyword>
    <keyword>Lenguaje de marcado extensible</keyword>

El elemento "area" indica una categoría general para el documento (p. ej. una de las siguientes: "Aplicaciones", "General", "Internet", "Gestión", "operaciones", "Encaminamiento", "Seguridad", "Transporte" o "Usuario"), mientras que los elementos "workgroup" representan los grupos de trabajo del IETF que han producido el documento y los elementos "keyword" indican términos de búsqueda útiles.

2.2.5 El elemento 'abstract'

Un documento puede tener un elemento "abstract", el cual contiene uno o más elementos "t". Normalmente aparece un único elemento "t", p. ej.,

    <abstract>
        <t>Este memorándum presenta una técnica para utilizar XML
	    (Lenguaje de marcado extensible) como formato fuente para documentos
	    de las series Borradores de Internet (I-D) y Petición de comentarios (RFC).</t>
    </abstract>

2.2.6 El elemento 'note'

Un documento puede tener uno o más elementos "note", cada uno de los cuales contiene uno o más elementos "t". Hay un atributo "title" obligatorio . Normalmente, el elemento "note" contiene texto del IESG, p. ej.,

    <note title="IESG Note">
        <t>El IESG tiene algo que decir.</t>
    </note>

2.2.7 Estado, Nota de Copyright, Índice

Nótese que el texto relacionado con el estado del memorándum, la nota de copyright y el índice no está incluido en el marcado del documento: es automáticamente insertado por la aplicación XML cuando produce una versión HTML o de texto plano del documento.

2.2.7.1 Conformidad con el RFC 2026

Si se quiere producir un Borrador de Internet ('Internet-Draft'), el atributo "ipr" debe aparecer en la etiqueta "<rfc>", al principio del documento. El valor del atributo debe ser uno de los siguientes:

full2026:
Indica que el documento es completamente conforme a todas las disposiciones de la Sección 10 del RFC 2026.
noDerivativeWorks2026:
Indica que el documento es completamente conforme a todas las disposiciones de la Sección 10 del RFC 2026, excepto que no se concede el derecho a producir trabajos derivados.
none:
Indica que el documento NO cumple las disposiciones de la Sección 10 del RFC 2026 y el autor no cede ningún derecho al IETF, excepto el de publicarlo como Borrador de Internet.

En el último caso no se insertará automáticamente ninguna nota de copyright durante el procesamiento por medio de una aplicación XML.

Consulte [3] para más detalles.

Por último, si el Borrador de Internet se está sometiendo a un proceso automatizado, el atributo "docName" debe aparecer en la etiqueta "<rfc>" al principio del archivo. El valor de este atributo contiene el nombre del documento (no del archivo) asociado con este Borrador de Internet, p. ej.,

    <rfc ipr="full" docName="draft-mrose-writing-rfcs-01">
        ...
    </rfc>

2.2.8 Resumen de los elementos iniciales

Juntándolo todo obtenemos, p. ej.,

    <front>
        <title>Cómo escribir I-D y RFC con XML</title>

        <author initials="M.T." surname="Rose"
                fullname="Marshall T. Rose">
            <organization>Invisible Worlds, Inc.</organization>

            <address>
                <postal>
                    <street>660 York Street</street>
                    <street>M/S 40</street>
                    <city>San Francisco</city> <region>CA</region>
                    <code>94110</code>
                    <country>US</country>
                </postal>

                <phone>+1 415 695 3975</phone>
                <email>[email protected]</email>
                <uri>http://invisible.net/</uri>
            </address>
        </author>

        <date month="Febrero" year="1999" />

        <area>General</area>
        <workgroup>Grupo de trabajo de embellecimiento de RFC</workgroup>
        <keyword>RFC</keyword>
        <keyword>Petición de Comentarios</keyword>
	<keyword>Request for Comments</keyword>
        <keyword>I-D</keyword>
        <keyword>Borrador de Internet</keyword>
	<keyword>Internet-Draft</keyword>
        <keyword>XML</keyword>
        <keyword>Extensible Markup Language</keyword>
        <abstract>
            <t>Este memorándum presenta una técnica para utilizar XML
	    (Lenguaje de marcado extensible) como formato fuente para documentos
	    de las series Borradores de Internet (I-D) y Petición de comentarios (RFC).</t>
        </abstract>
    </front>

2.3 Elementos centrales

El elemento "middle" contiene todas las secciones del documento excepto la bibliografía y los apéndices:

    ...
    </front>
    <middle>
        <section ...>
        <section ...>
        <section ...>
    </middle>
    <back>
    ...

El elemento "middle" está formado por uno o más elementos "section".

2.3.1 El elemento 'section'

Cada elemento "section" contiene una sección del documento. Tiene un atributo obligatorio, "title", que indica el título de la sección. Existe también un atributo opcional, "anchor", usado para las referencias cruzadas con el elemento "xref", p. ej.,

    <section anchor="intro" title="Introducción">
        ...
    </section>

El elemento "section" es recursivo: puede contener cualquier número y combinación de elementos "t", "figure" y "section", p. ej.,

    <section title="Elementos centrales">
        ...
        <section title="El elemento 'section'">
            ...
            <section title="El elemento 't'">...</section>
            <section title="El elemento 'list'">...</section>
            <section title="El elemento 'figure'">...</section>
            <section title="El elemento 'xref'">...</section>
            <section title="El elemento 'eref'">...</section>
            <section title="El elemento 'iref'">...</section>
        </section>
    </section>

2.3.1.1 El elemento 't'

El elemento "t" contiene cualquier número y combinación de párrafos, listas y figuras. Si se necesita una referencia cruzada a una sección, figura o referencia, se utiliza el elemento "xref". De forma similar, si se necesita una referencia externa, se usa el elemento "eref". La indexación de texto se realiza mediante el elemento "iref".

2.3.1.2 El elemento 'list'

El elemento "list" contiene uno o más ítems. Cada ítem es un ele- mento "t", estando permitida la recurrencia, p. ej.,

    <list style="numbers">
        <t>El primer item.</t>
        <t>El segundo item, que contiene dos sub-items con viñetas
             <list style="symbols">
                 <t>El primer sub-item.</t>
                 <t>El segundo sub-item.</t>
             </list>
        </t>
    </list>

El elemento "list" tiene un atributo opcional, "style", que puede tomar los valores "numbers" (para listas numeradas), "symbols" (para listas con viñetas), "hanging" (para listas con sangría francesa) o "empty" (para texto tabulado). Si un elemento "list" está anidado, se toma el valor por defecto del elemento padre; en caso contrario el valor por defecto es "empty".

El elemento "t", cuando está dentro de un elemento de tipo "lista con sangría francesa", tiene un atributo opcional, "hangText", que indica el texto a insertar, p. ej.,

    <list style="hanging">
        <t hangText="full2026:"> Indica que el documento es completamente conforme a todas las
        disposiciones de la Sección 10 del RFC 2026;</t>

        <t hangText="noDerivativeWorks2026:">Indica que el documento es completamente conforme a
        todas las disposiciones de la Sección 10 del RFC 2026, excepto que no se concede el 
        derecho a producir trabajos derivados.</t>

        <t hangText="none:">Indica que el documento NO cumple las disposiciones de la Sección 10
        del RFC 2026 y el autor no cede ningún derecho al IETF, excepto el de publicarlo como
        Borrador de Internet.</t>
    </list>

2.3.1.3 El elemento 'figure'

El elemento "figure" está formado a un elemento "preamble" opcional, un elemento "artwork" y un elemento "postamble" opcional. El elemento "figure" también tiene un atributo "anchor" opcional, que se utiliza para hacer referencias cruzadas con el elemento el elemento "xref". También existe el atributo opcional "title", que indica el título de la figura.

Los elementos "preamble" y "postamble", si aparecen, son simple- mente texto. Si se necesita poner una referencia cruzada a una sección, figura o referencia, se usa el elemento "xref". De igual manera, si es necesario indicar una referencia externa se utiliza el elemento "eref". La indexación de texto se efectúa mediante el elemento "iref".

El elemento "artwork", que debe aparecer, contiene "arte ASCII". A diferencia del texto contenido en los elementos "t", "preamble" o "postamble", en el elemento "artwork" no se ignoran los espacios en blanco horizontales o verticales.

Por tanto, juntándolo todo tenemos, p. ej.,

     <figure anchor="figura_ejemplo">
         <preamble>Por tanto, juntándolo todo tenemos, p. ej.,</preamble>
         <artwork>
            Escriba aquí su arte ASCII...

            ¡asegúrese de utilizar "&lt;" o "&amp;" en lugar de "<" y "&"
            respectivamente!
         </artwork>
         <postamble>que es un ejemplo muy simple.</postamble>
     </figure>

que es un ejemplo muy simple.

Si sus figuras ASCII contienen muchos caracteres "<", hay un truco de XML que puede utilizar:

    <figure>
      <preamble>Si sus figuras ASCII contienen muchos caracteres "&lt;", hay un truco
      de XML que puede utilizar:</preamble>
        <artwork><![CDATA[
            Escriba aquí su arte ASCII...

            ¡Asegúrese de no utilizar "]]"!
        ]]></artwork>
        <postamble>A la construcción "&lt;![CDATA[ ... ]]>" se la denomina
        bloque CDATA: Las aplicaciones XML ignorarán todo lo que aparezca dentro de los corchetes 
        más internos.</postamble>
    </figure>

A la construcción "<![CDATA[ ... ]]>" se la denomina bloque CDATA: Las aplicaciones XML ignorarán todo lo que aparezca dentro de los corchetes más internos.

Como el elemento "figure" representa un agrupamiento lógico de texto y figuras, una aplicación XML que produzca una versión en texto plano del documento deberá intentar mantener estos elementos en la misma página. Debido a que el RFC 2223[2] no permite más de 69 caracteres por 49 líneas de contenido en cada página, las apli- caciones XML deberán estar preparadas para introducir saltos de página anticipadamente para permitir un mejor agrupamiento visual.

Por último, el elemento "artwork" tiene dos atributos opcionales: "name" y "type". El primero se utiliza para sugerir un nombre de archivo al almacenar el contenido del elemento "artwork", mientras el segundo especifica un tipo orientativo para el contenido.

2.3.1.4 El elemento 'xref'

El elemento "xref" se utiliza para indicar referencias cruzadas a secciones, figuras y referencias. El atributo obligatorio "target" sirve para enlazar con el atributo "anchor" del elemento "section", "figure" y "reference". El valor de los atributos "anchor" y "tar- get" debe cumplir el formato indicado en la sintaxis de símbolo de la Conceptos básicos de XML.

Si se utiliza como un elemento vacío, p. ej.,

      debe cumplir el formato indicado en la sintaxis de símbolo de la
      <xref target="xml_basics" />.

la aplicación XML inserta una frase apropiada durante el proce- samiento, como "Sección 2.1" o "<a href="#xml_basics">XML Basics</a>".

Si se usa con contenido, p. ej.,

    conforme al <xref target="refs.RFC2223">RFC 2223</xref>.

la aplicación XML inserta una indicación apropiada durante el proce- samiento, como "RFC 2223 [2]" o "<a href="#refs.RFC2223">RFC 2223</a>". Aunque es la aplicación XML la que decide qué es una "indicación apropiada", dicha elección es consistente a lo largo del procesamiento de todo el documento.

2.3.1.5 El elemento 'eref'

El elemento "eref" se utiliza para indicar referencias a documentos externos. El atributo obligatorio "target" es un URI[4], p. ej,

    <eref target="http://metalab.unc.edu/xml/">Café con Leche</eref>

Nótese que, aunque el atributo "target" está siempre presente, el elemento "eref" puede estar vacío, p. ej.,

    <eref target="http://invisible.net/" />

y la aplicación XML inserta una indicación apropiada durante el procesamiento, como "[9]" o "<a href="http://invisible.net/">http://invisible.net/</a>".

2.3.1.6 El elemento 'iref'

El elemento "iref" se utiliza para añadir información a un índice analítico. El atributo obligatorio "item" indica la clave principal bajo la cual aparece la información, mientras que el atributo opcional "subitem" es la clave secundaria; p. ej.,

    <iref item="indexing" subitem="how to" />

Por último, nótese que el elemento "iref" es siempre vacío: nunca contiene texto.

2.3.1.7 El elemento 'vspace'

El autor utiliza el elemento "vspace", que sólo puede aparecer dentro del elemento "t", para instruir a la aplicación XML sobre cuestiones de formato. El atributo "blankLines" indica el número de líneas en blanco que se deben insertar. Un salto de línea físico se especifica usando el valor por defecto, "0".

Además, el elemento "vspace" puede utilizarse para forzar un nuevo párrafo dentro de un ítem de una lista, p. ej.,

    <list style="numbers">
        <t>Esto es un item de una lista.
           <vspace blankLines="1" />
           Esto es parte del mismo ítem de la lista,
           pero al ser mostrado aparece como un párrafo separado.
        </t>
    </list>

Una aplicación XML que produzca una versión texto del documento debe tener cuidado al encontrar un valor de "blankLines" que ocasiona un salto de página: en particular, si un elemento "vspace" provoca un salto de página no se deben añadir más saltos de línea después. Esto permite a los autores "forzar" un salto de página usando un valor arbitrariamente largo, p. ej., "blankLines='100'".

Por último, nótese que el elemento "vspace" siempre es vacío: nunca contiene texto.

2.4 Elementos finales

Por último, el elemento "back" se utiliza para incluir referencias y apéndices:

        ...
        </middle>
        <back>
            <references>
                <reference ...>
                <reference ...>
            </references>
            <section ...>
            <section ...>
        </back>
    </rfc>

El elemento "back" está formado por un elemento "references" opcional y uno o más elementos "section" opcionales. El elemento "back" propiamente dicho es opcional, es decir, si su documento no necesita de referencias o apéndices no es necesario incluirlo.

2.4.1 El elemento 'references'

El elemento "references" contiene la bibliografía del documento. Contiene uno o más elementos "reference".

Cada elemento "reference" contiene un elemento "front" y uno o más elementos "seriesInfo" opcionales.

Ya hemos hablado del elemento "front" en la Elementos iniciales.

El elemento "seriesInfo" tiene dos atributos, "name" y "value" que identifican las series de documentos y la entrada en la serie, respectivamente.

El elemento "reference" tiene un atributo opcional "anchor" que se utiliza con el elemento "xref" para las referencias cruzadas, p. ej.,

    <reference anchor="refs.RFC2200">
        <front>
            <title>Internet Official Protocol Standards</title>
            <author initials="J." surname="Postel"
                    fullname="Jon Postel">
                <organization abbrev="ISI">
                USC/Information Sciences Institute
                </organization>
            </author>
    
            <date month="June" year="1997" />
        </front>
        <seriesInfo name="RFC" value="2200" />
        <seriesInfo name="STD" value="1" />
    </reference>

El elemento "reference" tiene también un atributo "target" opcional que se utiliza para las referencias externas (véase la El elemento 'eref'). La aplicación XML, si produce una versión HTML del docu- mento, usará el atributo "target" de la forma apropiada. Sin embargo, si el atributo "name" del elemento "seriesInfo" tiene el valor "RFC", entonces la aplicación XML deberá proporcionar automáticamente un valor por defecto para el atributo "target" (p. ej. "http://example.com/rfcs/rfc2200.txt").

2.4.2 Apéndices

Para incluir apéndices tras la bibliografía se añaden simplemente más elementos "section". (Ver el ejemplo al principio de la Elementos finales.)

2.4.3 Estado del Copyright

El estado del copyright del documento no está incluido en el marcado del documento: es insertado automáticamente por la aplicación XML encargada de producir la versión texto o HTML del documento.



 Indice 

3. Como procesar el archivo fuente XML

Esta sección trata sobre aplicaciones que trabajan con un archivo fuente XML. Hay muchas herramientas XML disponibles, así como muchas listas de recursos XML, p. ej., Cafe con Leche.

Hay dos tipos de herramientas XML: certificadoras y no certificado- ras. Ambos tipos comprueban que el archivo fuente cumpla las reglas dadas en la Conceptos básicos de XML. Sin embargo, además de asegurarse de que el archivo fuente está bien formado, una herramienta certificadora lee también la DTD referenciada por el archivo fuente para asegurarse de que concuerdan. Existen varias herramientas disponibles, tanto certi- ficadoras como no certificadoras.

3.1 Edición

Existen varios editores XML disponibles. En un caso ideal, se deseará disponer de un editor que certifique. Esto tiene dos ventajas:

Existen dos modos principales en Emacs que soportan XML: tdtd and psgml. El último permite validar el archivo fuente (llamando a un programa externo). Si se edita el archivo fuente con Emacs y el modo principal no es "SGML" o "XML", normalmente sólo hay que añadir estas líneas al archivo ".emacs":

    (setq auto-mode-alist
          (cons (cons "\\.xml$" 'sgml-mode) auto-mode-alist))

y reiniciar Emacs. Si no funciona, pruebe con alguno de los recursos vistos más arriba.

Para editar los archivos fuente, el autor utiliza el modo sgml de Emacs y un editor certificador comercial, llamado Clip! version 1.5

3.1.1 Pruebas

Si su editor no valida, deberá utilizar un programa que valide el archivo fuente.

Para este propósito el autor utiliza el analizador AlphaWorks XML. Este requiere que el sistema tenga una máquina virtual Java. Además de en Java, existen analizadores escritos en C, Perl, Python y Tcl.

3.2 Conversión a formato de texto

El autor ha escrito la herramienta xml2rfc, que lee el archivo fuente y produce una versión en texto y otra HTML del documento. (Este documento fue creado usando la herramienta xml2rfc). Tenga en cuenta que xml2rfc no es una herramienta certificadora, así que es una buena idea usar un editor certificador o ejecutar un analizador certificador aparte antes de usar la herramienta.

3.3 Conversión a formato HTML

El Lenguaje de Estilo XML (XML Style Language, XSL) se utiliza para describir transformaciones desde un archivo fuente a algún otro docu- mento estructurado. Así que lo ideal sería utilizar un formateador XSL para convertir el archivo fuente XML a HTML.

Sin embargo, en el momento de escribir esto XSL está aún en un estado de considerable incertidumbre (por tanto no se ha incluido ninguna referencia en este documento, ya que para cuando lea este documento las referencias serán obsoletas). Así que, entretanto, el autor uti- liza la herramienta xml2rfc para esta tarea, aún cuando no propor- ciona demasiada flexibilidad en su diseño HTML.

3.4 Presentación

Los navegadores que soportan XSL u Hojas de estilo en cascada (Cas- cading Style Sheets, CSS) son capaces de mostrar el archivo fuente directamente.

A fecha de hoy el autor no utiliza ninguno de estos navegadores, sino que realiza la conversión de los archivos fuente a texto o a HTML.

3.5 Búsquedas

Al igual que los editores de texto, se puede utilizar cualquier herramienta de búsqueda orientada a texto (p. ej. grep) con el archivo fuente. Sin embargo, existen herramientas de búsqueda que entienden la información estructurada.

El autor utiliza la sgrep version 1.9 para ello, p. ej.,

    sgrep -g xml 'ELEMENTS("title") not in ELEMENTS("back")' \
        writing-rfcs.xml

que extrae el elemento "title" del archivo fuente.



 Indice 

4. Consideraciones de seguridad

Este documento no plantea cuestiones de seguridad. Sin embargo, de acuerdo con [2], su documento debe contener una sección cerca del final que trate las consideraciones de seguridad del protocolo o pro- cedimientos que constituyen el asunto principal del documento, p. ej.,

     <middle>
         ...
         <section title="Consideraciones de seguridad">
             <t>Este documento no plantea cuestiones de seguridad. Sin embargo, de acuerdo con
              <xref target="refs.RFC2223" />, su documento debe contener una sección cerca del
              final que trate las consideraciones de seguridad del protocolo o procedimientos que
              constituyen el asunto principal del documento.</t>
         </section>
     </middle>


 Indice 

Referencias

[1] World Wide Web Consortium, "Extensible Markup Language (XML) 1.0", W3C XML, Febrero 1998.
[2] Postel, J. y J. Reynolds, "Instructions to RFC Authors", RFC 2223 (N.T. existe versión en español), Octubre 1997.
[3] Bradner, S., "The Internet Standards Process -- Revision 3", RFC 2026, BCP 9, Octubre 1996.
[4] Berners-Lee, T., Fielding, R. y L. Masinter, "Uniform Resource Identifiers (URI): Generic Syntax", RFC 2396, Agosto 1998.


 Indice 

Dirección del Autor

  Marshall T. Rose
  Invisible Worlds, Inc.
  660 York Street
  San Francisco, CA 94110
  US
Phone:  +1 415 695 3975
EMail:  [email protected]
URI:  http://invisible.net/


 Indice 

Apéndice A. El elemento 'rfc'

Cuando la etiqueta "<rfc>", presente al principio del archivo, con- tiene únicamente un atributo "ipr", se produce un Borrador de Internet. Sin embargo, cuando el editor RFC añade otros atributos a esta etiqueta, se produce un RFC, p. ej.,

    <rfc number="2200"
         obsoletes="2000, 1920, 1880, 1800, ..."
         category="std"
         seriesNo="1">

Como mínimo debe aparecer el atributo "number".

Los otros atributos son:

Por último, existe una entidad especial, "&rfc.number". Los autores que preparen un RFC deben utilizar esta entidad siempre que quieran hacer referencia al número del RFC dentro del propio documento. En las versiones impresas del documento, aparecerá la sustitución apropiada (o "XXXX").



 Indice 

Apéndice B. La DTD RFC

<!--
  DTD para la serie de documentos RFC, borrador del 30-01-99
  -->


<!--
    Contenido

       Tipos de datos de la DTD

       El nivel principal

       Elementos iniciales

       Elementos centrales

       Elementos finales

  -->


<!--
      Tipos de datos de la DTD:

      entidad       descripción
      ======        ===============================================
      NUMBER        [0-9]+
      NUMBERS       una lista de NUMBER separados por comas

      DAY           el día del mes, p.ej., "1"
      MONTH         el mes del año, p.ej., "Enero"
      YEAR          un año de cuatro dígitos, p.ej., "1999"

      URI           p.ej., "http://invisible.net/"

      ATEXT/CTEXT   texto ASCII visible (sin fines de línea)

      TEXT          datos tipo carácter
-->


<!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 "2629">


<!--
    El nivel principal
  -->


<!--
    Los atributos del elemento "rfc" son proporcionados por el editor RFC.
    Los autores deberán dejarlos en blanco cuando estén preparando borradores.
    El atributo "seriesNo" se utiliza si la categoría es, p. ej., BCP.
  -->
<!ELEMENT rfc         (front,middle,back?)>
<!ATTLIST rfc
          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> 

<!--
  Elementos iniciales
  -->


<!ELEMENT front       (title,author+,date,area*,workgroup*,keyword*,
                       abstract?,note*)>

<!-- el elemento "abbrev" se utiliza en cabeceras, etc. -->
<!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?)>

<!-- Puede aparecer como mucho uno de cada uno de los elementos "city", "region",
     "code", y "country". -->
<!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-datos... -->
<!ELEMENT area        (%CTEXT;)>
<!ELEMENT workgroup   (%CTEXT;)>
<!ELEMENT keyword     (%CTEXT;)>

<!ELEMENT abstract    (t)+>
<!ELEMENT note        (t)+>
<!ATTLIST note
          title       %ATEXT;            #REQUIRED>


<!--
  Elementos centrales
  -->


<!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>

<!-- El valor del atributo "style" se hereda del padre más cercano -->
<!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)*>


<!--
  Elementos finales
  -->


<!-- Las secciones, si aparecen, son apéndices -->
<!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>


 Indice 

Apéndice C. Agradecimientos

El autor agradece sinceramente las contribuciones de: Alan Barrett, Brad Burdick, Brian Carpenter, Steve Deering, Patrik Faltstrom, Jim Gettys, Carl Malamud, Chris Newman, Kurt Starsinic, and, Frank Strauss.



 Indice 

Indice analítico

I 
 indexing
   how to


 Indice 

Declaración completa de Copyright

Agradecimiento