<?xml version="1.0"?>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">

<?rfc toc='yes'?>
<?rfc tocompact='yes'?>
<?rfc compact='yes'?>
<?rfc subcompact='yes'?>
<?rfc sortrefs='no'?>
<?rfc symrefs='no'?>

<rfc number="3470" category="bcp" seriesNo="70" xmlns:x='http://purl.org/net/xml2rfc/ext' xmlns:grddl='http://www.w3.org/2003/g/data-view#' grddl:transformation='rfc2629grddl.xslt'>
  <front>
    <title abbrev="XML Within IETF Protocols">
     Guidelines for the Use of Extensible Markup Language (XML) within&#160;IETF&#160;Protocols</title>
    
    <author initials="S." surname="Hollenbeck" fullname="Scott Hollenbeck">
      <organization>VeriSign, Inc.</organization>
      <address>
        <postal>
          <street>21345 Ridgetop Circle</street>
          <city>Dulles</city>
          <region>VA</region>
          <code>20166-6503</code>
          <country>US</country>
        </postal>
        <phone>+1 703 948 3257</phone>
        <email>shollenbeck@verisign.com</email>
      </address>
    </author>
    
    <author initials="M." surname="Rose" fullname="Marshall T. Rose">
      <organization>Dover Beach Consulting, Inc.</organization>
      <address>
        <postal>
          <street>POB 255268</street>
          <city>Sacramento</city>
          <region>CA</region>
          <code>95865-5268</code>
          <country>US</country>
        </postal>
        <phone>+1 916 483 8878</phone>
        <email>mrose@dbc.mtview.ca.us</email>
      </address>
    </author>
    
    <author initials="L." surname="Masinter" fullname="Larry Masinter">
      <organization>Adobe Systems Incorporated</organization>
      <address>
        <postal>
          <street>Mail Stop W14</street>
          <street>345 Park Ave.</street>
          <city>San Jose</city>
          <region>CA</region>
          <code>95110</code>
          <country>US</country>
        </postal>
        <phone>+1 408 536 3024</phone>
        <email>LMM@acm.org</email>
        <uri>http://larry.masinter.net</uri>
      </address>
    </author>
    
    <date year="2003" month="January" day="23"/>
    <area>General</area>
    <keyword>BCP</keyword>
    <keyword>Best Current Practice</keyword>
    <keyword>XML</keyword>
    <keyword>Extensible Markup Language</keyword>
    
    <abstract>
      <t>The Extensible Markup Language (XML) is a framework for structuring
      data. While it evolved from Standard Generalized Markup Language (SGML)
      -- a markup language primarily focused on structuring documents -- XML
      has evolved to be a widely-used mechanism for representing structured
      data.</t>

      <t>There are a wide variety of Internet protocols being developed; many
      have need for a representation for structured data relevant to their
      application.  There has been much interest in the use of XML as a
      representation method.  This document describes basic XML concepts,
      analyzes various alternatives in the use of XML, and provides guidelines
      for the use of XML within IETF standards-track protocols.</t>
    </abstract>
    
    <note title="Conventions Used In This Document">
      <t>This document recommends, as policy, what specifications for Internet
      protocols -- and, in particular, IETF standards track protocol documents
      -- should include as normative language within them.  The capitalized
      keywords "SHOULD", "MUST", "REQUIRED", etc. are used in the sense of how
      they would be used within other documents with the meanings as specified
      in BCP 14, RFC 2119 <xref target="RFC2119"/>.</t>
    </note>
  </front>
  
  <middle>
    <section title="Introduction and Overview" anchor="intro">
      <t>The Extensible Markup Language (XML, <xref target="W3C.REC-xml"/>) is a
      framework for structuring data. While it evolved from the Standard
      Generalized Markup Language (SGML, <xref target="ISO.8879.1988"/>) -- a
      markup language primarily focused on structuring documents -- XML has
      evolved to be a widely-used mechanism for representing structured data
      in protocol exchanges.  See "XML in 10 points"
      <xref target="W3C.XML-points"/> for an introduction to XML.</t>
      
      <section title="Intended Audience">
        <t>Many Internet protocol designers are considering using XML and XML
        fragments within the context of existing and new Internet protocols.
        This document is intended as a guide to XML usage and as IETF policy
        for standards track documents.  Experienced XML practitioners will
        likely already be familiar with the background material here, but the
        guidelines are intended to be appropriate for those readers as well.</t>
      </section>
      
      <section title="Scope" anchor="scope">
        <t>This document is intended to give guidelines for the use of XML
        content within a larger protocol.  The goal is not to suggest that XML
        is the "best" or "preferred" way to represent data; rather, the goal is
        to lay out the context for the use of XML within a protocol once other
        factors point to XML as a possible data representation solution.  The
        Common Name Resolution Protocol (CNRP, <xref target="RFC3367"/>)
        is an example of a protocol that would be addressed by these guidelines
        if it were being newly defined.  This document does not address the use
        of protocols like SMTP or HTTP to send XML documents as ordinary email
        or web content.</t>

        <t>There are a number of protocol frameworks already in use or under
        development which focus entirely on "XML protocol" -- the exclusive use
        of XML as the data representation in the protocol.  For example, the
        World Wide Web Consortium (W3C) is developing an XML Protocol framework
        based on SOAP (<xref target="W3C.WD-SOAP-1"/> and
        <xref target="W3C.WD-SOAP-2"/>).  The applicability of such protocols
        is not part of the scope of this document.</t>

        <t>In addition, there are higher-level representation frameworks, based on
        XML, that have been designed as carriers of certain classes of information;
        for example, the Resource Description Framework (RDF,
        <xref target="W3C.REC-rdf-syntax"/>) is an XML-based representation for
        logical assertions.  This document does not provide guidelines for the
        use of such frameworks.</t>
      </section>
      
      <section title="XML Evolution" anchor="evolution">
        <t>XML 1.0 was originally published as a W3C recommendation in February
	1998 <xref target="W3C.REC-xml-1998"/>, and was revised in a 2nd edition
	<xref target="W3C.REC-xml"/> in October 2000.  Several additional
	facilities have also been defined that layer on the base specification.
        Although these additions are designed to be consistent with XML 1.0,
        they have varying levels of stability, consensus, and implementation.
        Accordingly, this document identifies the major evolutionary features
        of XML and makes suggestions as to the circumstances in which each
        feature should be used.</t>
      </section>
      
      <section title="XML Users, Support Groups, and Additional Information">
        <t>There are many XML support groups, with some devoted to the
        <eref target="http://xml.org/">entire XML industry</eref>,
        some devoted to <eref target="http://xmlhack.com/">developers</eref>,
        some devoted to the
        <eref target="http://oasis-open.org/">business applications of XML</eref>,
        and many, many groups devoted to the use of XML in a particular
        context.</t>
    
        <t>It is beyond the scope of this document to provide a comprehensive
        list of referrals.  Interested readers are directed to the three
        references above as starting points, as well as their favorite Internet
        search engine.</t>
      </section>
    </section>
    
    <section title="XML Selection Considerations" anchor="selection">
      <t>XML is a tool that provides a means towards an end.  Choosing the right
      tool for a given task is an essential part of ensuring that the task can
      be completed in a satisfactory manner.  This section describes factors
      to be aware of when considering XML as a tool for use in IETF protocols:
      
        <list style="numbers">
          <t>XML is a meta-markup language that can be used to define markup
          languages for specific domains and problem spaces.</t>
          
          <t>XML provides both logical structure and physical structure to
          describe data.  Data framing is built-in.</t>
          
          <t>XML instances can be validated against the formal definition of a
          protocol specification.</t>
          
          <t>XML supports internationalization.</t>
          
          <t>XML is extensible.  Unlike some other markup languages (such as
          HTML), new tags (and thus new protocol elements) can be defined
          without requiring changes to XML itself.</t>
          
          <t>XML is still evolving.  The formal specifications are still
          being influenced and updated as use experience is gained and
          applied.</t>
          
          <t>XML does not provide native mechanisms to support detailed data
          typing.  Additional mechanisms  (such as those described in
          <xref target="xmlv"/>) are required to specify abstract protocol data
          types.</t>
          
          <t>XML is text-based, so XML fragments are easily created, edited,
          and managed using common utilities.  Further, being text-based means
          it more readily supports incremental development, debugging, and
          logging.  A simple "canned" XML fragment can be embedded within
          a program as a string constant, rather than having to be constructed.</t>
          
          <t>Binary data has to be encoded into a text-based form to be
          represented in XML.</t>
          
          <t>XML is verbose when compared with many other structured data
          representation languages.  A representation with element extensibility
          and human readability typically requires more bits when compared to one
          optimized for efficient machine processing.</t>
          
          <t>XML implementations are still relatively new.  As designers and
          implementers gain experience, it is not uncommon to find defects
	  in early and current products.</t>
	  
          <t>XML support is available in a large number of software
          development utilities, available in both open source and
          proprietary products.</t>
          
          <t>XML processing speed can be an issue in some environments. XML
          processing can be slower because XML data streams may be larger
          than other representations, and the use of general purpose XML
          parsers will add a software layer with its own performance costs
          (though these costs can be reduced through consistent use of an
          optimized parser).  In some situations, processing XML requires
          examining every byte of the entire XML data stream, with higher
          overhead than with representations where uninteresting segments can
          be skipped.</t>
        </list>
      </t>
    </section>
    
    <section title="XML Alternatives" anchor="alternatives">
      <t>This document focuses on guidelines for the use of XML.  It is
      useful to consider why one might use XML as opposed to some other
      mechanism.  This section considers some other commonly used
      representation mechanisms and compares XML to those alternatives.</t>
      
      <t>For many fundamental protocols, the extensibility requirements are
      modest, and the performance requirements are high enough that fixed
      binary data blocks are the appropriate representation; mechanisms such
      as XML merely add bloat.  RFC 3252 <xref target="RFC3252"/> describes a
      humorous example of XML as protocol bloat.</t>
      
      <t>In addition, there are other representation and extensibility
      frameworks that have been used successfully within communication
      protocols.  For example, Abstract Syntax Notation 1 (ASN.1)
      <xref target="ISO.8824.1990"/> along with the corresponding Basic Encoding
      Rules (BER, <xref target="ISO.8825.1990"/>) are part of the OSI communication
      protocol suite, and have been used in many subsequent communications
      standards (e.g., the ANSI Information Retrieval protocol
      <xref target="ANSI.Z39-50.1995"/> and the Simple Network Management Protocol
      (SNMP, <xref target="RFC1157"/>).  The External Data Representation (XDR,
      <xref target="RFC1832"/>) and variations of it have been used in many other
      distributed network applications (e.g., the Network File System (NFS)
      protocol <xref target="RFC3010"/>).  With some ASN.1 encoding types, data
      types are explicit in the representation, while with XDR, the data types of
      components are described externally as part of an interface specification.</t>
      
      <t>Many other protocols use data structures directly (without data
      encapsulation) by describing the data structure with Backus Normal Form
      (BNF, <xref target="Backus"/>); many IETF protocols use an Augmented
      Backus-Naur Form (ABNF, <xref target="RFC2234"/>).  The Simple Mail
      Transfer Protocol (SMTP, <xref target="RFC2821"/>) is an example of a
      protocol specified using ABNF.</t>
      
      <t>ASN.1, XDR, and BNF are described here as examples of alternatives
      to XML for use in IETF protocols.  There are other alternatives, but a
      complete enumeration of all possible alternatives is beyond the scope
      of this document.</t>
       
      <t>Other representation methods may differ from XML in several important ways:</t>
      
      <t>Text Encoding and character sets: the character encoding used to 
      represent a formal specification.  XML defines a consistent character
      model based on the Universal Character Set (UCS,
      <xref target="ISO.10646-1.1993"/> and <xref target="UNICODE"/>), and
      requires that XML parsers accept at least UTF-8 <xref target="RFC2279"/>
      and UTF-16 <xref target="RFC2781"/>, and allows for other encodings.
      While ASN.1 and XDR may carry strings in any encoding, there is no common
      mechanism for defining character encodings within them.  Typically, ABNF
      definitions tend to be defined in terms of octets or characters in ASCII.
      </t>
      
      <t>Data Encoding: XML is defined as a sequence of characters, rather than
      a sequence of bytes.  XML Schema <xref target="W3C.REC-xmlschema-2"/>
      includes mechanisms for representing some data types (integer, date, array,
      etc.) but many binary data types are encoded in Base64
      <xref target="RFC2045"/> or hexadecimal.  ASN.1 and XDR have rich
      mechanisms for encoding a wide variety of data types.</t>
      
      <t>Extensibility: XML has a rich extensibility model such that XML
      specifications can frequently be versioned independently.  Specifications
      can be extended by adding new element names and attributes (if done
      compatibly); other extensions can be added by defining new XML namespaces
      <xref target="W3C.REC-xml-names"/>, though there is no standard mechanism
      in XML to indicating whether or not new extensions are mandatory to
      recognize.  Similarly, there are several techniques available to extend
      ASN.1 specifications.  XDR specifications tend to not be independently
      extensible by different parties because the framing and data types are
      implicit and not self-describing.  The extensibility of BNF-based protocol
      elements needs to be explicitly planned.</t>
      
      <t>Legibility of protocol elements: As noted above, XML is text-based,
      and thus carries the advantages (and disadvantages) of text-based
      protocol elements. Typically this is shared with (A)BNF-defined protocol
      elements.  ASN.1 and XDR use binary encodings which are not easily human readable.</t>
    </section>
    
    <section title="XML Use Considerations and Recommendations" anchor="use">
      <t>This section notes several aspects of XML and makes recommendations
      for use.  Since the 1998 publication of XML version 1
      <xref target="W3C.REC-xml-1998"/>, an editorial second edition
      <xref target="W3C.REC-xml"/> was published in 2000; this section refers
      to the second edition.</t>
      
      <section title="XML Syntax and Well-Formedness" anchor="xmlSyntax">
        <t>XML <xref target="W3C.REC-xml"/> is defined in terms of a concrete
        syntax: a sequence of characters, using the characters "&lt;", "=",
        "&amp;", etc. as delimiters.  An instance is XML if and only if it is
        well-formed, i.e., all character and markup data conforms to the
        structural rules defined in section <xref target="W3C.REC-xml" x:fmt="number" x:sec="2.1" x:rel="#sec-well-formed"/> of <xref target="W3C.REC-xml"/>.
        </t>

        <t>Character and markup data that is not well-formed is not XML;
        well-formedness is the basis for syntactic compatibility with
        XML.  Without well-formedness, all of the advantages of using XML
        disappear.  For this reason, it is recommended that protocol
        specifications explicitly require XML well-formedness ("MUST be
        well-formed").</t>

        <t>The IETF has a long-standing tradition of "be liberal in what you
        accept" that might seem to be at odds with this recommendation.  Given
        that XML requires well-formedness, conformant XML parsers are
        intolerant of well-formedness errors.  When specifying the handing of
        erroneous XML protocol elements, a protocol design must never
        recommend attempting to partially interpret non-well-formed instances
        of an element which is required to be XML.  Reasonable behaviors in
        such a scenario could include attempting retransmission or aborting an
        in-progress session.</t>
      </section>
      
      <section title="XML Information Set" anchor="infoset">
        <t>In addition to the concrete syntax of XML, there is an abstract model
        of XML content known as the "Information Set" (infoset)
        <xref target="W3C.REC-infoset"/>.  One might think of an XML parser as
        consuming the concrete syntax and producing an XML Information Set for
        further processing.</t>
        
        <t>In typical use of XML, the definition of allowable XML documents is
        often defined in terms of the Information Set of the XML and not the
        concrete syntax.  The notion is that any syntactic representation which
        yielded the same information set would be treated equivalently.</t>

        <t>It some cases, protocols have been defined solely in terms of the XML
        Information Set, or by allowing other concrete syntax representations.
        However, since the context of XML embedded within other Internet
        protocols requires an unambiguous definition of the concrete syntax,
        defining an XML protocol element in terms of its XML Information Set
        alone and allowing other concrete syntax representations is out of
        scope for this document.</t>
      </section>
      
      <section title="Syntactic Restrictions" anchor="synRest">
        <t>In some circumstances a protocol designer may be tempted to define an
        XML-based protocol element as "XML", but at the same time imposing
        additional restrictions beyond those imposed by the XML recommendation
        itself -- for example, restricting the document character encoding, or
        avoiding CDATA sections, character entity references, imposing
        additional restrictions on use of white space, etc.  The general category
        of restrictions addressed by this section are ones that would allow some
        but not other of the set of syntactic representations which have the
        same canonical representation according to canonical XML described in
        RFC 3076 <xref target="RFC3076"/>.</t>

        <t>Making these kinds of restrictions in a protocol definition may have
        the disadvantage that an implementer of the protocol may not be able
        to use an otherwise conforming XML processor to parse the XML-based
        protocol elements.  In some cases, the motivation for subsetting XML
        is to allow implementers to build special-purpose processors that are
        lighter weight than a full-scale conforming XML processor.  There are
        a number of good, conforming XML parsers that are small, fast, and
        free, while special-purpose processors have frequently been known to
        fail to handle some cases of legal XML syntax.</t>

        <t>In general, such syntactic restrictions should be avoided.  In
        circumstances where restrictions on the variability of the syntactic
        representation of XML is necessary for one reason or another,
        designers should consider using "Canonical XML" <xref target="RFC3076"/>
        as the definition of the protocol element, since all such variability
        has been removed.  Some specific issues are discussed in
        <xref target="xmldecl"/>, <xref target="entity"/>, and
        <xref target="charset"/> below.</t>
      </section>
      
      <section title="XML Declarations" anchor="xmldecl">
        <t>An XML declaration (defined in section <xref target="W3C.REC-xml" x:fmt="number" x:sec="2.8" x:rel="#sec-prolog-dtd"/> of
        <xref target="W3C.REC-xml"/>) is a small header at the beginning of an
        XML data stream that indicates the XML version and the character encoding
        used.  For example,</t>
        
        <t>&lt;?xml version="1.0" encoding="UTF-8"?></t>
        
        <t>specifies the use of XML version 1 and UTF-8 character encoding.</t>
        
        <t>In some uses of XML as an embedded protocol element, the XML used is
        a small fragment in a larger context, where the XML version is fixed at
        "1.0" and the character encoding is known to be "UTF-8".  In those
        cases, an XML declaration might add extra overhead.  In cases where the
        XML is a larger component which may find its way alone as an external
        entity body (transported as a MIME message, for example), the XML
        declaration is an important marker and is useful for reliability and
        extensibility.  The XML declaration is also an important marker for
        character set/encoding (see <xref target="charset"/>), if any encoding
        other than UTF-8 or UTF-16 is used. Note that in the case of UTF-16,
        XML requires that the entity starts with a Byte Order Mark (BOM), which
        is not part of the character data.  Note that the XML Declaration itself is
        not part of the XML document's Information Set.</t>
        
        <t>Protocol specifications must be clear about use of XML
        declarations.  XML <xref target="W3C.REC-xml"/> notes that "XML
        documents should begin with an XML declaration which specifies the
        version of XML being used."  In general, an XML declaration should be
        encouraged ("SHOULD be present") and must always be allowed ("MAY be
        sent").  An XML declaration should be required in cases where, if
        allowed, the character encoding is anything other than UTF-8 or
        UTF-16.</t>
      </section>
      
      <section title="XML Processing Instructions" anchor="xmlpi">
        <t>An XML processing instruction (defined in section <xref target="W3C.REC-xml" x:fmt="number" x:sec="2.6" x:rel="#sec-pi"/> of
        <xref target="W3C.REC-xml"/>) is a component of an XML document that
        signals extra "out of band" information to the receiver; a common use
        of XML processing instructions are for document applications.  For
        example, the XML2RFC application used to generate this document
        and described in RFC 2629 <xref target="RFC2629"/> supports a "table
        of contents" processing instruction:</t>
        
        <t>&lt;?rfc toc="yes"?></t>
        
	<t>As described in section <xref target="W3C.REC-xml" x:fmt="number" x:sec="2.6" x:rel="#sec-pi"/> of <xref target="W3C.REC-xml"/>,
	processing instructions are not part of the document's character data,
	but must be passed through to the application.  As a consequence, it is
	recommended that processing instructions be ignored when encountered in
	normal protocol processing.  It is thus also recommended that processing
	instructions not be used to define normative protocol data structures or
	extensions for the following reasons:
        
          <list style="symbols">
            <t>Processing instructions are not namespace aware; there is no way
            to qualify a processing instruction target with a namespace.</t>

            <t>Processing instruction use can not be constrained by most schema
            languages,</t>

            <t>Character references are not recognized within a processing
            instruction.</t>

            <t>Processing instructions don't have any XML-defined structure
            beyond the division between the target and everything else.  This
            means that applications typically have to parse the content of the
            processing instruction in a system-dependent way; if the content
            was provided within an element instead, the structure could be
            expressed in the XML and the parsing could be done by the XML
            parser.</t>
          </list>
        </t>
      </section>
      
      <section title="XML Comments" anchor="xmlcomments">
        <t>An XML comment (defined in section <xref target="W3C.REC-xml" x:fmt="number" x:sec="2.5" x:rel="#sec-comments"/> of <xref target="W3C.REC-xml"/>)
        is a component of an XML document that provides descriptive information
        that is not part of the document's character data.  XML comments, like
        comments used in programming languages, are often used to provide
        explanatory information in human-understandable terms.  An example:</t>
        
        <t>&lt;!-- This is a example comment. --&gt;</t>

        <t>XML comments can be ignored by conformant processors.  As a consequence,
        it is strongly recommended that comments not be used to define normative
        protocol data structures or extensions.  It is thus also strongly
        recommended that comments be ignored if encountered in normal protocol
        processing.</t>
      </section>
      
      <section title="Validity and Extensibility" anchor="xmlv">
        <t>One important value of XML is that there are formal mechanisms for
        defining structural and data content constraints; these constrain
        the identity of elements or attributes or the values contained
        within them. There is more than one such formalism:
        
          <list style="symbols">
            <t>A "Document Type Definition" (DTD) is defined in section <xref target="W3C.REC-xml" x:fmt="number" x:sec="2.8" x:rel="#sec-prolog-dtd"/> of
            <xref target="W3C.REC-xml"/>; the concept came from a similar
            mechanism for SGML.  There is significant experience with using DTDs,
            including in IETF protocols.</t>

            <t>XML Schema (defined in <xref target="W3C.REC-xmlschema-1"/> and
            <xref target="W3C.REC-xmlschema-2"/>) provides additional features
            to allow a tighter and more precise specification of allowable
            protocol syntax and data type specifications.</t>

            <t>There are also a number of other mechanisms for describing XML
            instance validity; these include, for example, Schematron
            <xref target="Schematron"/> and RELAX NG <xref target="RELAX-NG"/>.
            Part 2 of the ISO/IEC Document Schema Definition Language
            (DSDL, <xref target="DSDL"/>) standard is based on RELAX NG.</t>
          </list>
        </t>

        <t>There is ongoing discussion (and controversy) within the XML
        community on the use and applicability of various validity
        constraint mechanisms.  The choice of tool depends on the needs
        for extensibility or for a formal language and mechanism for
        constraining permissible values and validating adherence to the
        constraints.</t>
        
        <t>There are cases where protocols have defined validity using one or
        another validity mechanism, but the protocol definitions have not
        insisted that all corresponding protocol elements be "valid".  The
        decision depends in part on the design for protocol extensibility.  Each
        formalism has different ways of allowing for future extensions; in
        addition, a protocol design may have its own versioning mechanism, way
        of updating the schema, or pointing to a new one.  For example, the use
        of XML namespaces (<xref target="namespaces"/>) with XML Schema allows
        other kinds of extensibility without compromising schema validity.</t>

        <t>No matter what formalism is chosen, there are usually additional
        syntactic constraints, and inevitably additional semantic constraints,
        on the validity of XML elements that cannot be expressed in the
        formalism.</t>
        
        <t>This document makes the following recommendations for the
        definition of protocols using XML:
        
          <list style="symbols">
            <t>Protocols should use an appropriate formalism for defining
            validity of XML protocol elements.</t>

            <t>Protocols may or may not insist that all corresponding protocol
            elements be valid, according to the validity mechanism chosen;
            in either case, the extensibility design should be clear.  What
            happens if the data is not valid?</t>
            
            <t>As described in <xref target="alternatives"/> there is no
            standard mechanism in XML for indicating whether or not new
            extensions are mandatory to recognize.  XML-based protocol
            specifications should thus explicitly describe extension mechanisms
            and requirements to recognize or ignore extensions.</t>
          </list>
        </t>
        
        <t>An idealized model for XML processing might first check for
        well-formedness; if OK, apply the primary formalism and, if the
        instances "passes", apply the other constraints so that the entire
        set (or as much as is machine processable) can be checked at the same
        time.</t>
        
        <t>However, it is reasonable to allow conforming implementations to
        avoid doing validation at run-time and rely instead on ad-hoc code to
        avoid the higher expense, for example, of schema validation, especially
        given that there will likely be additional hand-crafted semantic
        validation.</t>
      </section>
      
      <section title="Semantics as Well as Syntax" anchor="semantics">
      <t>
      While the definition of an XML protocol element using a validity formalism is useful, it is not sufficient.  XML by itself does not supply semantics. Any document defining a protocol element with XML MUST also have sufficient prose in the document describing the semantics of whatever XML the document has elected to define.

      </t>
      </section>

      <section title="Namespaces" anchor="namespaces">
        <t>XML namespaces, defined in <xref target="W3C.REC-xml-names"/>,
        provide a means of assigning markup to a specific vocabulary.  If two
        elements or attributes from different vocabularies have the same name,
        they can be distinguished unambiguously if they belong to different
        namespaces.  Additionally, namespaces provide significant support for
        protocol extensibility as they can be defined, reused, and processed
        dynamically.</t>
        
        <t>Markup vocabulary collisions are very possible when namespaces are
        not used to separate and uniquely identify vocabularies.  Protocol
        definitions should use existing XML namespaces where appropriate.
        When a new namespace is needed, the "namespace name" is a URI that is
        used to identify the namespace; it's also useful for that URI to point
        to a description of the namespace.  Typically (and recommended practice
        in W3C) is to assign namespace names using persistent http URIs.</t>
	
	<t>In the case of namespaces in IETF standards-track documents, it would
        be useful if there were some permanent part of the IETF's own web space
        that could be used for this purpose.  In lieu of such, other permanent
        URIs can be used, e.g., URNs in the IETF URN namespace (see
        <xref target="I-D.mealling-iana-urn"/> and
        <xref target="I-D.mealling-iana-xmlns-registry"/>).  Although there are
        instances of IETF specifications creating new URI schemes to define
        XML namespaces, this practice is strongly discouraged.</t>
        
        <section title="Namespaces and Attributes" anchor="nsAttr">
          <t>There is a frequently misunderstood aspect of the relationship
          between unprefixed attributes and the default XML namespace - the
          natural assumption is that an unprefixed attribute is qualified by
          the default namespace, but this is not true.  Rather, the unprefixed
          attribute belongs to no namespace at all.  Thus, in the following
          example:
        
            <figure>
              <artwork>
  &lt;ns1:fox a="xxx" ns1:b="qqq"
   xmlns="http://example.org"/&gt;
  &lt;fox a="xxx" ns1:b="qqq"
   xmlns="http://example.org" xmlns:ns1="http://example.org"/&gt;
              </artwork>
            </figure>
          </t>
          
          <t>the attribute "a" is in no namespace, while "ns1:b" is the same
          namespace as the containing element.  A specific description of the
          relationship between default namespaces and attributes can be found
          in section <xref target="W3C.REC-xml-names" x:fmt="number" x:sec="5.2" x:rel="#defaulting"/> of <xref target="W3C.REC-xml-names"/>.  The practical
          implication of the relationship between namespaces and attributes is
          that care must be taken to ensure that no element contains multiple
          attributes that have identical names or have qualified names with
          the same local part and with prefixes which have been bound to
          namespace names that are identical.</t>
          
          <t>In XML applications, the choice between prefixed and non-prefixed
          attributes frequently is based on whether they always appear inside
          elements of the same namespace (in which case non-prefixed and thereby
          non-namespaced names are used) or whether it's required that they can
          be applied to elements in other arbitrary namespaces (in which case a
          prefixed name is used).  Both situations occur in the XSLT
          <xref target="W3C.REC-xslt"/> language: while attributes are
          unprefixed when they occur inside elements in the XSLT namespace,
          such as:
        
            <figure>
              <artwork>
  &lt;xsl:value-of select="."/&gt;
              </artwork>
            </figure>
          </t>

          <t>they are prefixed when they appear in non-XSLT elements, such as
          the "xsl:version" attribute when using "literal result element
          stylesheets":

            <figure>
              <artwork>
  &lt;html xsl:version="1.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns="http://www.w3.org/TR/xhtml1/strict"&gt;
    &lt;head&gt;
      &lt;title&gt;Expense Report Summary&lt;/title&gt;
    &lt;/head&gt;
    &lt;body&gt;
      &lt;p&gt;Total: &lt;xsl:value-of select="exp-rep/total"/&gt;&lt;/p&gt;
    &lt;/body&gt;
  &lt;/html&gt;
              </artwork>
            </figure>
          </t>
        </section>
      </section>

      <section title="Element and Attribute Design Considerations" anchor="elAttr">
        <t>XML provides much flexibility in allowing a designer to use either
        elements, attributes, or element content to carry data.  This section
        gives a flavor of the design considerations; there is much written about
        this in the XML literature.  Consistent use of elements, attributes, and
        values is an important characteristic of a sound design.</t>
        
        <t>Attributes are generally intended to contain meta-data that
        describes the element, and as such they are subject to
        the following restrictions:
        
        <list style="symbols">
          <t>Attributes are unordered,</t>
          
          <t>There can be no more than one instance of a given attribute within
          a given element, though an attribute may contain several values
          separated by white space (<xref target="W3C.REC-xml"/>, section <xref target="W3C.REC-xml" x:fmt="number" x:sec="2.3" x:rel="#sec-common-syn"/>
          and <xref target="W3C.REC-xml" x:fmt="number" x:sec="3.3.1" x:rel="#sec-attribute-types"/>),</t>
          
          <t>Attribute values can have no internal XML markup for providing
          internal structure, and</t>
          
          <t>Attribute values are normalized (<xref target="W3C.REC-xml"/>,
          section <xref target="W3C.REC-xml" x:fmt="number" x:sec="3.3" x:rel="#attdecls"/>) before processing</t>
        </list>
        </t>
        
        <t>Consider the following example that describes an IP address using an
        attribute to describe the address value:
        
          <figure>
            <artwork>
  &lt;address addrType="ipv4"&gt;10.1.2.3&lt;/address&gt;
            </artwork>
          </figure>
        </t>
        
        <t>One might encode the same information using an &lt;addrType&gt;
        element instead of an "addrType" attribute:
        
          <figure>
            <artwork>
  &lt;address&gt;
    &lt;addrType&gt;ipv4&lt;/addrType&gt;
    &lt;value&gt;10.1.2.3&lt;/value&gt;
  &lt;/address&gt;
            </artwork>
          </figure>
        </t>
        
        <t>Another way of encoding the same information would be to use
        markup for the "addrType":
	
          <figure>
            <artwork>
  &lt;address&gt;
    &lt;addrType&gt;&lt;ipv4/&gt;&lt;/addrType&gt;
    &lt;value&gt;10.1.2.3&lt;/value&gt;
  &lt;/address&gt;
            </artwork>
          </figure>
        </t>
        
        <t>Choosing between these designs involves tradeoffs concerning,
        among other considerations, the likely extensibility patterns and the
        ability of the formalism to constrain the values appropriately.  In
        the first example, the attribute can be thought of as meta-data to
        the element which it modifies, and provides for a kind of "element
        extensibility".  The third example allows for a different kind of
        extensibility: the "ipv4" space can be extended using other
        namespaces, and the &lt;ipv4&gt; element can include additional
        markup.</t>
        
        <t>Many protocols include parameters that are selected from an enumerated
        set of values.  Such enumerated values can be encoded as elements,
        attributes, or strings within element values.  Any protocol design should
        consider how the set of enumerated values is to be extended: by revising
        the protocol, by including different values in different XML namespaces,
        or by establishing an IANA registry (as per RFC 2434
        <xref target="RFC2434"/>).  In addition, a common practice in XML is to
        use a URI as an XML attribute value or content.</t>
	
	<t>Languages that describe syntactic validity (including XML Schema
        and DTDs) often provide a mechanism for specifying "default" values for
        an attribute.  If an element does not specify a value for the attribute,
        then the "default" value is used.  The use of default values for
        attributes is discouraged by this document.  Although the use of this
        feature can reduce both the size and clutter of XML documents, it has
        a negative impact on software which doesn't know the document's validity
        constraints (e.g., for packet tracing or digital signature).</t>
      </section>
      
      <section title="Binary Data and Text with Control Characters" anchor="binary">
        <t>XML is defined as a character stream rather than a stream of octets.
        There is no way to embed raw binary data directly within an XML data
        stream; all binary data must be encoded as characters.  There are a
        number of possible encodings; for example, XML Schema
        <xref target="W3C.REC-xmlschema-2"/> defines encodings using decimal
        digits for integers, Base64 <xref target="RFC2045"/>, or hexadecimal
        digits.  In addition, binary data might be transmitted using some other
        communication channel, and referenced within the XML data itself using a
        URI.</t>
        
        <t>Protocols that need a container that can hold both structural data and
        large quantities of binary data should consider carefully whether XML is
        appropriate, since the Base64 and hex encodings are inefficient.
        Otherwise, protocols should use the mechanisms of XML Schema to
        represent binary data; the Base64 encoding is best for larger quantities
        of data.</t>
        
        <t>XML does not allow "control" characters (0x00-0x1F) except for TAB
        (0x09), CR (0x0A), and LF (0x0D).  They can not be specified even
        using character entity references.  There is currently no common
        way of encoding them within what is otherwise ordinary text.  This
        means that strings that might be considered "text" within an
        ABNF-defined protocol element may need to be treated as binary
        data within an XML representation, or some other encoding mechanism
        might need to be invented.</t>
      </section>
      
      <section title="Incremental Processing" anchor="incproc">
        <t>In some situations, it is possible to incrementally process an
        XML document as each tag is received; this is analogous to
        the process by which browsers incrementally render HTML pages
        as they are received.  Note that incremental processing is difficult
        to implement if interspersed across multiple interactions.  In other
        words, if a protocol requires incremental processing across both
        directions of a bidirectional stream, then it may place an unusual
        burden on protocol implementers.</t>
      </section>
      
      <section title="Entity Declarations and Entity References" anchor="entity">
        <t>In addition to its role as a validity mechanism, an XML DTD provides
        a facility for "entity declarations" (<xref target="W3C.REC-xml"/>,
        section <xref target="W3C.REC-xml" x:fmt="number" x:sec="4.2" x:rel="#sec-entity-decl"/>).  An entity declaration defines, in the DTD, a kind of
        macro capability where an "entity reference" may be used to call up
        and include the content of the entity declaration.</t>
        
        <t>This feature adds complexity to XML processing, and seems more
        appropriate for use of XML in document processing than in data
        representation.  As such, this document recommends avoiding
        entity declarations in protocol specifications.</t>
        
        <t>On the other hand, there are five standard entity references built
        into XML: "&amp;amp;", "&amp;lt;", "&amp;gt;", "&amp;apos;", and "&amp;quot;".
        XML also has the ability to write character data using numeric entity
        references (using the Unicode <xref target="UNICODE"/> value for the
        character).  Entity references are normally expanded before the XML
        Information Set is computed.  Restricting the use of these entity
        references would introduce an additional syntactic restriction
        (see <xref target="synRest"/>) unnecessarily; these entity references
        should be allowed.</t>
      </section>
      
      <section title="External References" anchor="extRef">
        <t>When using XML in the context of a stateless protocol, be it the
        protocol itself (e.g., SOAP), or simply as content transferred by an
        existing protocol (e.g., XML/HTTP), care must be taken to not make the
        meaning of a message depend on information outside the message itself.
        XML provides external entities (see <xref target="entity"/>), which
        are an easy way to make the meaning of a message depend on something
        external.  Using schema languages that can change the Infoset, like
        XML Schema, is another way.</t>
      </section>
      
      <section title="URI Processing" anchor="uriProc">
        <t>The XML Base specification <xref target="W3C.REC-xmlbase"/> defines
        an attribute "xml:base" in the XML namespace that is intended to affect
        the "base" to be used for relative URI processing described in RFC 2396
        <xref target="RFC2396"/>.  The facilities of xml:base for controlling
        URI processing may be useful to protocol designers, but if xml:base is
        allowed the interaction with any other protocol facilities for
        establishing URI context must be specified clearly.  Note that use of
        relative URIs in namespace declarations has been deprecated by the W3C;
        some specific issues with relative URIs in namespace declarations and
        canonical XML can be found in section <xref target="RFC3076" x:fmt="number" x:sec="1.3"/> of RFC 3076
        <xref target="RFC3076"/>.</t>
        
        <t>Note also that, in many cases, the term "URI" and the syntactic use
        of URIs within XML allows non-ASCII characters within URIs.  For example,
        the XML Schema "anyURI" datatype (<xref target="W3C.REC-xmlschema-2"/>
        section <xref target="W3C.REC-xmlschema-2" x:fmt="number" x:sec="3.2.17" x:rel="#anyURI"/>) allows for direct encoding of characters outside of the
        US-ASCII range.  Most current IETF protocols and specifications do not
        allow this syntax.  Protocol specifications should be clear about the
        range of characters specified, e.g., by adding a restriction to the range
        of characters allowed in the anyURI schema datatype, or by specifying
        that characters outside the US-ASCII range should be escaped when
        passed to older protocols or APIs.</t>
      </section>
      
      <section title="White Space" anchor="whitespace">
        <t>XML's prescribed white space handling behavior can be a source of
        confusion between protocol designers and implementers.  In XML instances
        all white space is considered significant and is by default visible to
        processing applications.  Consider this example from
        <xref target="elAttr"/>:
	
          <figure>
            <artwork>
  &lt;address&gt;
    &lt;addrType&gt;&lt;ipv4/&gt;&lt;/addrType&gt;
    &lt;value&gt;10.1.2.3&lt;/value&gt;
  &lt;/address&gt;
            </artwork>
          </figure>
        </t>
        
        <t>This fragment contains an &lt;address&gt; element and two child
        elements.  It also contains white space for pretty-printing purposes:
        
          <list style="symbols">
            <t>at least three line separators, which will be converted by
            the XML processor to newline (U+000A) characters (see section
            <xref target="W3C.REC-xml" x:fmt="number" x:sec="2.11" x:rel="#sec-line-ends"/> of <xref target="W3C.REC-xml"/>), and</t>
        
            <t>one or more white space characters prefixing the &lt;addrType&gt;
            and &lt;value&gt; elements, which an XML processor will make visible
            to software reading the instance.</t>
          </list>
        </t>

        <t>Implementers might safely assume that they can ignore the white
        space in the example above, but white space used for pretty-printing
        can be a source of confusion in other situations.  Consider a minor
        change to the &lt;value&gt; element:
	
          <figure>
            <artwork>
  &lt;value&gt;
    10.1.2.3
  &lt;/value&gt;
            </artwork>
          </figure>

        where white space is found on both sides of the IP address.  XML
        processors treat the white space surrounding "10.1.2.3" as an integral
        part of the &lt;value&gt; element.  A failure to recognize
        this behavior can lead to confusion and errors in both design and
        implementation.</t>

        <t>All white space is considered significant in XML instances.  As a
        consequence, it is recommended that protocol designers provide
        specific guidelines to address white space handling within protocols
        that use XML.</t>
      </section>

      <section title="Interaction with the IANA" anchor="ianaInt">
        <t>When XML is used in an IETF protocol there are multiple factors that
        might require IANA action, including:
          <list style="symbols">
            <x:lt>
            <t>XML media types. A piece of XML in a protocol element is sometimes
            intrinsically bound to the protocol context in which it appears, and
            in particular might be directly derived from and/or input to protocol
            state-machine implementations.  In cases where the XML content has no
            relevant meaning outside it's original protocol context, there is no
            reason to register a MIME type.  When it is possible that XML content
            can be interpreted outside of its original context (such as when that
            XML content is being stored in a file system or tunneled over another
            protocol), then a MIME type can be registered to specify the
            specific format for the data and to provide a hint as to how it might
            be processed.</t>
            <t>If MIME labeling is needed, then the advice of RFC 3023
            <xref target="RFC3023"/> applies.  In particular, if the XML
            represents a new language or document type, a new MIME media type
            should be registered for the reasons described in RFC 3023 sections
            <xref target="RFC3023" x:fmt="number" x:sec="7"/> and <xref target="RFC3023" x:fmt="number" x:sec="A.1"/>.  In situations where XML is used to encode generic
            structured data (e.g., a document-oriented application that involves
            combining XML with a stylesheet), "application/xml" might be
            appropriate ("MAY be used").  The "text/xml" media type is not
            recommended ("SHOULD NOT be used") because of issues involving
            display behavior and default charsets.</t>
            </x:lt>
            <x:lt>
            <t>URI registration.  There is an ongoing effort (<xref target="I-D.mealling-iana-urn"/>, 
            <xref target="I-D.mealling-iana-xmlns-registry"/>) to create a URN
            namespace explicitly for defining URIs for namespace names and other
            URI-designated protocol elements for use within IETF standards track
            documents; it might also establish IETF policy for such use.</t>
            </x:lt>
          </list>
        </t>
      </section>
    </section>
    
    <section title="Internationalization Considerations" anchor="i18n">
      <t>This section describes internationalization considerations for the
      use of XML to represent data in IETF protocols.  In addition to
      the recommendations here, IETF policy on the use of character sets
      and languages described in RFC 2277 <xref target="RFC2277"/> also
      applies.</t>
      
      <section title="Character Sets and Encodings" anchor="charset">
        <t>IETF protocols frequently speak of the "character set" or "charset"
        of a string, which is used to denote both the character repertoire
        and the encoding used to represent sequences of characters as sequences
        of bytes.</t>
        
        <t>XML performs all character processing in terms of the Universal
        Character Set (UCS, <xref target="ISO.10646-1.1993"/> and
        <xref target="UNICODE"/>).  XML requires all XML processors
        to support both the UTF-8 <xref target="RFC2279"/> and
        UTF-16 <xref target="RFC2781"/> encodings of UCS, although other
        encodings (charsets) compatible with UCS may be allowed.  Documents and external
        parsed entities encoded in UTF-16 are required to begin with a Byte
        Order Mark (<xref target="W3C.REC-xml"/> section <xref target="W3C.REC-xml" x:fmt="number" x:sec="4.3.3" x:rel="#charencoding"/>).</t>

        <t>IETF policy <xref target="RFC2277"/> requires that the UTF-8 charset
        be allowed for all text.</t>
        
        <t>This document requires that IETF protocols using XML allow for the
        UTF-8 encoding of XML data.  Since conforming XML processors are
        mandated to also accept UTF-16 encoding, also allowing for UTF-16
        encoding (with the mandated Byte Order Mark) is recommended.  Some XML
        applications are using a Byte Order Mark with UTF-8 encoding, but this
        use should not be encouraged and isn't appropriate for XML embedded in
        other protocols.</t>

        <t>Restricting XML data to only be expressed in UTF-8 is an additional
        syntactic restriction (see <xref target="synRest"/>) which, depending on
        circumstances, might add additional implementation complexity.  When
        encodings other than UTF-8 or UTF-16 are used, the encoding must be
        specified using an "encoding" attribute in the XML declaration (see
        <xref target="xmldecl"/>), even if there might be other protocol
        mechanisms for designating the encoding.</t>
      </section>
      
      <section title="Language Declaration">
        <t>Text encapsulated in XML can be represented in many different human
        languages, and it is often useful to explicitly identify the language used
        to present the text.  XML defines a special attribute in the "xml"
        namespace, xml:lang, that can be used to specify the language used to
        represent data in an XML document.  The xml:lang attribute (which has to
        be explicitly declared for use within a DTD or XML Schema) and the
        values it can assume are defined in section <xref target="W3C.REC-xml" x:fmt="number" x:sec="2.12" x:rel="#sec-lang-tag"/> of
        <xref target="W3C.REC-xml"/>.</t>
        
        <t>It is strongly recommended that protocols representing data in a human
        language mandate use of an xml:lang attribute if the XML instance might
        be interpreted in language-dependent contexts.</t>
      </section>
      
      <section title="Other Internationalization Considerations">
        <t>There are standard mechanisms in the typography of some human languages
        that can be difficult to represent using merely XML character string data
        types.  For example, pronunciation clues can be provided using Ruby
        annotation <xref target="W3C.REC-RUBY"/>, and embedding controls (such as
        those described in section <xref target="W3C.NOTE-UNICODE" x:fmt="number" x:sec="3.4" x:rel="#Deprecated"/> of <xref target="W3C.NOTE-UNICODE"/>) or
        an XHTML <xref target="W3C.REC-XHTML"/> "dir" attribute can be used to
        note the proper display direction for bidirectional text.</t>
        
        <t>There are a number of tricky issues that can arise when using extended 
        character sets with XML document formats.  For example:
        
        <list style="symbols">
          <t>There are different ways of representing characters consisting of
          combining characters, and</t>
          
          <t>There has been some debate about whether URIs should be represented
          using a restricted US-ASCII subset or arbitrary Unicode (e.g. "URI
          character sequence" vs "original character sequence" in RFC 2396
          <xref target="RFC2396"/>).</t>
        </list>
        </t>

        <t>Some of these issues are discussed, with recommendations, in
        the W3C's "Character Model for the World Wide Web" document
        <xref target="W3C.WD-CHARMOD"/>.</t>
        
        <t>It is strongly recommended that protocols representing data in a human
        language reuse existing mechanisms as needed to ensure proper display of
        human-legible text.</t>
      </section>
    </section>
    
    <section title="IANA Considerations" anchor="iana">
      <t>This memo, per se, has no impact on the IANA. <xref target="ianaInt"/> notes
      some factors that might require IANA action when protocols using XML are
      defined.</t>
    </section>
    
    <section title="Security Considerations" anchor="security">
      <t>Network protocols face many different kinds of threats, including
      unintended disclosure, modification, and replay.  Passive attacks, such
      as packet sniffing, allow an attacker to capture and view information
      intended for someone else.  Captured data can be modified and replayed to
      the original intended recipient, with the recipient having no way to know
      that the information has been compromised, detect modifications, be assured
      of the sender's identity, or to confirm which protocol instance is legitimate.</t>
    
      <t>Several security service options for XML are available to help mitigate
      these risks.  Though XML does not include any built-in security services,
      other protocols and protocol layers provide services that can be used to
      protect XML protocols.  XML encryption <xref target="W3C.REC-xmlenc-core"/>
      provides privacy services to prevent unintended disclosure.  Canonical XML
      <xref target="RFC3076"/> and XML digital signatures <xref target="RFC3275"/>
      provide integrity services to detect modification and authentication
      services to confirm the identity of the data source.  Other IETF security
      protocols (e.g., the Transport Layer Security (TLS) protocol
      <xref target="RFC2246"/>) are also available to protect data and service
      endpoints as appropriate.  Given the lack of security services in XML,
      it is imperative that protocol specifications mandate additional
      security services to counter common threats and attacks; the specific
      required services will depend on the protocol's threat model.</t>

      <t>Experience has shown that code that parses network traffic is often a
      "soft target" for blackhats. Accordingly, implementers MUST take great care
      to ensure that their XML handling code is robust with respect to malformed
      XML, buffer overruns, misuse of entity declarations, and so on.</t>
     
      <t>XML mechanisms that follow external references (<xref target="extRef"/>)
      may also expose an implementation to various threats by causing the
      implementation to access external resources automatically. It is important
      to disallow arbitrary access to such external references within XML data
      from untrusted sources. Many XML grammars define constructs using URIs for
      external references; in such cases, the same precautions must be taken.</t>
    </section>
    
    <section title="Acknowledgements" anchor="acks">
      <t>The authors would like to thank the following people who have provided
      significant contributions to the development of this document:</t>
      
      <t>Mark Baker, Tim Berners-Lee, Tim Bray, James Clark, Josh Cohen, John Cowan, 
      Alan Crouch, Martin Duerst, Jun Fujisawa, Christian Geuer-Pollmann,
      Yaron Goland, Graham Klyne, Dan Kohn, Rick Jeliffe, Chris Lilley, Murata Makoto,
      Michael Mealling, Jean-Jacques Moreau, Andrew Newton, Julian Reschke,
      Jonathan Rosenberg, Miles Sabin, Rich Salz, Peter Saint-Andre, Simon St Laurent, Margaret Wasserman, and Daniel Veillard.</t>
    </section>
  </middle>
  
  <back>
    <references title="Normative References">
                           

<reference anchor='RFC2119'>

<front>
<title abbrev='RFC Key Words'>Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials='S.' surname='Bradner' fullname='Scott Bradner'>
<organization>Harvard University</organization>
<address>
<postal>
<street>1350 Mass. Ave.</street>
<street>Cambridge</street>
<street>MA 02138</street></postal>
<phone>- +1 617 495 3864</phone>
<email>sob@harvard.edu</email></address></author>
<date month='March' year='1997' />
<area>General</area>
<keyword>keyword</keyword>
<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.  Authors who follow these guidelines
   should incorporate this phrase near the beginning of their document:

<list>
<t>
      The key words &quot;MUST&quot;, &quot;MUST NOT&quot;, &quot;REQUIRED&quot;, &quot;SHALL&quot;, &quot;SHALL
      NOT&quot;, &quot;SHOULD&quot;, &quot;SHOULD NOT&quot;, &quot;RECOMMENDED&quot;,  &quot;MAY&quot;, and
      &quot;OPTIONAL&quot; in this document are to be interpreted as described in
      RFC 2119.
</t></list></t>
<t>
   Note that the force of these words is modified by the requirement
   level of the document in which they are used.
</t></abstract></front>

<seriesInfo name='BCP' value='14' />
<seriesInfo name='RFC' value='2119' />
<format type='TXT' octets='4723' target='ftp://ftp.isi.edu/in-notes/rfc2119.txt' />
<format type='HTML' octets='14486' target='http://xml.resource.org/public/rfc/html/rfc2119.html' />
<format type='XML' octets='5661' target='http://xml.resource.org/public/rfc/xml/rfc2119.xml' />
</reference>

                           

<reference anchor='RFC2246'>

<front>
<title>The TLS Protocol Version 1.0</title>
<author initials='T.' surname='Dierks' fullname='Tim Dierks'>
<organization>Certicom</organization>
<address>
<email>tdierks@certicom.com</email></address></author>
<author initials='C.' surname='Allen' fullname='Christopher Allen'>
<organization>Certicom</organization>
<address>
<email>callen@certicom.com</email></address></author>
<author initials='W.' surname='Treese' fullname='Win Treese'>
<organization>Open Market</organization>
<address>
<email>treese@openmarket.com</email></address></author>
<author initials='P.L.' surname='Karlton' fullname='Philip L. Karlton'>
<organization>Netscape Communications</organization>
<address></address></author>
<author initials='A.O.' surname='Freier' fullname='Alan O. Freier'>
<organization>Netscape Communications</organization>
<address>
<email>freier@netscape.com</email></address></author>
<author initials='P.C.' surname='Kocher' fullname='Paul C. Kocher'>
<organization>Independent Consultant</organization>
<address>
<email>pck@netcom.com</email></address></author>
<date month='January' year='1999' />
<abstract>
<t>This document specifies Version 1.0 of the Transport Layer Security (TLS) protocol. The TLS protocol provides communications privacy over the Internet. The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery.</t></abstract></front>

<seriesInfo name='RFC' value='2246' />
<format type='TXT' octets='170401' target='ftp://ftp.isi.edu/in-notes/rfc2246.txt' />
</reference>

                           

<reference anchor='RFC2277'>

<front>
<title abbrev='Charset Policy'>IETF Policy on Character Sets and Languages</title>
<author initials='H.T.' surname='Alvestrand' fullname='Harald Tveit Alvestrand'>
<organization>UNINETT</organization>
<address>
<postal>
<street>P.O.Box 6883 Elgeseter</street>
<street>N-7002 TRONDHEIM</street>
<country>NORWAY</country></postal>
<phone>+47 73 59 70 94</phone>
<email>Harald.T.Alvestrand@uninett.no</email></address></author>
<date month='January' year='1998' />
<area>Applications</area>
<keyword>Internet Engineering Task Force</keyword>
<keyword>character encoding</keyword></front>

<seriesInfo name='BCP' value='18' />
<seriesInfo name='RFC' value='2277' />
<format type='TXT' octets='16622' target='ftp://ftp.isi.edu/in-notes/rfc2277.txt' />
<format type='HTML' octets='26556' target='http://xml.resource.org/public/rfc/html/rfc2277.html' />
<format type='XML' octets='15544' target='http://xml.resource.org/public/rfc/xml/rfc2277.xml' />
</reference>

                           

<reference anchor='RFC2279'>

<front>
<title abbrev='UTF-8'>UTF-8, a transformation format of ISO 10646</title>
<author initials='F.' surname='Yergeau' fullname='Francois Yergeau'>
<organization>Alis Technologies</organization>
<address>
<postal>
<street>100, boul. Alexis-Nihon</street>
<street>Suite 600</street>
<city>Montreal</city>
<region>Quebec</region>
<code>H4M 2P2</code>
<country>CA</country></postal>
<phone>+1 514 747 2547</phone>
<facsimile>+1 514 747 2561</facsimile>
<email>fyergeau@alis.com</email></address></author>
<date month='January' year='1998' />
<abstract>
<t>ISO/IEC 10646-1 defines a multi-octet character set called the Universal Character Set (UCS) which encompasses most of the world's writing systems. Multi-octet characters, however, are not compatible with many current applications and protocols, and this has led to the development of a few so-called UCS transformation formats (UTF), each with different characteristics.  UTF-8, the object of this memo, has the characteristic of preserving the full US-ASCII range, providing compatibility with file systems, parsers and other software that rely on US-ASCII values but are transparent to other values. This memo updates and replaces RFC 2044, in particular addressing the question of versions of the relevant standards.</t></abstract></front>

<seriesInfo name='RFC' value='2279' />
<format type='TXT' octets='21634' target='ftp://ftp.isi.edu/in-notes/rfc2279.txt' />
</reference>

                           

<reference anchor='RFC3023'>

<front>
<title>XML Media Types</title>
<author initials='M.' surname='Murata' fullname='M. Murata'>
<organization /></author>
<author initials='S.' surname='St. Laurent' fullname='S. St. Laurent'>
<organization /></author>
<author initials='D.' surname='Kohn' fullname='D. Kohn'>
<organization /></author>
<date month='January' year='2001' /></front>

<seriesInfo name='RFC' value='3023' />
<format type='TXT' octets='86011' target='ftp://ftp.isi.edu/in-notes/rfc3023.txt' />
</reference>

                           

<reference anchor='RFC3076'>

<front>
<title>Canonical XML Version 1.0</title>
<author initials='J.' surname='Boyer' fullname='J. Boyer'>
<organization /></author>
<date month='March' year='2001' /></front>

<seriesInfo name='RFC' value='3076' />
<format type='TXT' octets='63955' target='ftp://ftp.isi.edu/in-notes/rfc3076.txt' />
</reference>

                           

<reference anchor='RFC3275'>

<front>
<title>(Extensible Markup Language) XML-Signature Syntax and Processing</title>
<author initials='D.' surname='Eastlake' fullname='D. Eastlake'>
<organization /></author>
<author initials='J.' surname='Reagle' fullname='J. Reagle'>
<organization /></author>
<author initials='D.' surname='Solo' fullname='D. Solo'>
<organization /></author>
<date month='March' year='2002' /></front>

<seriesInfo name='RFC' value='3275' />
<format type='TXT' octets='164198' target='ftp://ftp.isi.edu/in-notes/rfc3275.txt' />
</reference>

      
                           

<reference anchor="W3C.REC-xml" target="http://www.w3.org/TR/REC-xml">
  <front>
    <title>Extensible Markup Language (XML) 1.0 (2nd ed)</title>
    <author initials="T." surname="Bray" fullname="Tim Bray">
      <organization>Textuality and Netscape</organization>
      <address>
        <email>tbray@textuality.com</email>
      </address>
    </author>
    <author initials="J." surname="Paoli" fullname="Jean Paoli">
      <organization>Microsoft</organization>
      <address>
        <email>jeanpa@microsoft.com</email>
      </address>
    </author>
    <author initials="C.M." surname="Sperberg-McQueen" fullname="C. M. Sperberg-McQueen">
      <organization>University of Illinois at Chicago and Text Encoding Initiative</organization>
      <address>
        <email>cmsmcq@uic.edu</email>
      </address>
    </author>
    <author initials="E." surname="Maler" fullname="Eve Maler">
      <organization>Sun Microsystems</organization>
      <address>
        <email>eve.maler@east.sun.com</email>
      </address>
    </author>
    <date day="6" month="October" year="2000"/>
  </front>
  <seriesInfo name="W3C" value="REC-xml"/>
</reference>



                           

<reference anchor="W3C.REC-xml-names" target="http://www.w3.org/TR/REC-xml-names">
  <front>
    <title>Namespaces in XML</title>
    <author initials="T." surname="Bray" fullname="Tim Bray">
      <organization>Textuality</organization>
      <address>
        <email>tbray@textuality.com</email>
      </address>
    </author>
    <author initials="D." surname="Hollander" fullname="Dave Hollander">
      <organization>Hewlett-Packard Company</organization>
      <address>
        <email>dmh@corp.hp.com</email>
      </address>
    </author>
    <author initials="A." surname="Layman" fullname="Andrew Layman">
      <organization>Microsoft</organization>
      <address>
        <email>andrewl@microsoft.com</email>
      </address>
    </author>
    <date day="14" month="January" year="1999"/>
  </front>
  <seriesInfo name="W3C" value="REC-xml-names"/>
</reference>


                           

<reference anchor="W3C.REC-xmlenc-core"
 target="http://www.w3.org/TR/xmlenc-core/">
  <front>
    <title>XML Encryption Syntax and Processing</title>
    <author initials="T." surname="Imamura" fullname="Takeshi Imamura">
      <organization>IBM</organization>
    </author>
    <author initials="B." surname="Dillaway" fullname="Blair Dillaway">
      <organization>Microsoft</organization>
    </author>
    <author initials="J." surname="Schaad" fullname="Jim Schaad">
      <organization>Soaring Hawk Consulting</organization>
    </author>
    <author initials="E." surname="Simon" fullname="Ed Simon">
      <organization></organization>
    </author>
    <date year="2001" month="October" day="18"/>
  </front>
  <seriesInfo name="W3C" value="REC-xmlenc-core"/>
</reference>


    </references>
    
    <references title="Informative References">
                           

<reference anchor="I-D.mealling-iana-urn">
<front>
<title>An IETF URN Sub-namespace for Registered Protocol Parameters</title>

<author initials="M" surname="Mealling" fullname="Michael  Mealling">
    <organization />
</author>

<author initials="L" surname="Masinter" fullname="Larry Masinter">
    <organization />
</author>

<author initials="T" surname="Hardie" fullname="Ted Hardie">
    <organization />
</author>

<author initials="G" surname="Klyne" fullname="Graham Klyne">
    <organization />
</author>

<date month="March" day="20" year="2003" />
</front>

<seriesInfo name="Internet-Draft" value="draft-mealling-iana-urn-04" />
<format type="TXT"
        target="http://www.ietf.org/internet-drafts/draft-mealling-iana-urn-04.txt" />
</reference>

                           

<reference anchor="I-D.mealling-iana-xmlns-registry">
<front>
<title>The IETF XML Registry</title>

<author initials="M" surname="Mealling" fullname="Michael Mealling">
    <organization />
</author>

<date month="June" day="18" year="2003" />
</front>

<seriesInfo name="Internet-Draft" value="draft-mealling-iana-xmlns-registry-05" />
<format type="TXT"
        target="http://www.ietf.org/internet-drafts/draft-mealling-iana-xmlns-registry-05.txt" />
</reference>

      
                           

<reference anchor='RFC1157'>

<front>
<title abbrev='SNMP'>Simple Network Management Protocol (SNMP)</title>
<author initials='J.D.' surname='Case' fullname='Jeffrey D. Case'>
<organization>Simple Network Management Protocol (SNMP) Research</organization>
<address>
<postal>
<street>P.O. Box 8593</street>
<city>Knoxville</city>
<region>TN</region>
<code>37996-4800</code>
<country>US</country></postal>
<phone>+1 615 573 1434</phone>
<email>case@CS.UTK.EDU</email></address></author>
<author initials='M.' surname='Fedor' fullname='Mark Fedor'>
<organization>Performance Systems International</organization>
<address>
<postal>
<street>125 Jordan Road</street>
<street>Rensselaer Technology Park</street>
<city>Troy</city>
<region>NY</region>
<code>12180</code>
<country>US</country></postal>
<phone>+1 518 283 8860</phone>
<email>fedor@patton.NYSER.NET</email></address></author>
<author initials='M.L.' surname='Schoffstall' fullname='Martin Lee Schoffstall'>
<organization>Performance Systems International</organization>
<address>
<postal>
<street>165 Jordan Road</street>
<street>Rensselaer Technology Park</street>
<city>Troy</city>
<region>NY</region>
<code>12180</code>
<country>US</country></postal>
<phone>+1 518 283 8860</phone>
<email>schoff@NISC.NYSER.NET</email></address></author>
<author initials='J.R.' surname='Davin' fullname='James R. Davin'>
<organization>Massachusetts Institute of Technology (MIT), Laboratory for Computer Science</organization>
<address>
<postal>
<street>545 Technology Square</street>
<street>NE43-507</street>
<city>Cambridge</city>
<region>MA</region>
<code>02139</code>
<country>US</country></postal>
<phone>+1 617 253 6020</phone>
<email>jrd@ptt.lcs.mit.edu</email></address></author>
<date month='May' day='1' year='1990' /></front>

<seriesInfo name='STD' value='15' />
<seriesInfo name='RFC' value='1157' />
<format type='TXT' octets='74894' target='ftp://ftp.isi.edu/in-notes/rfc1157.txt' />
</reference>

                           

<reference anchor='RFC1832'>

<front>
<title>XDR: External Data Representation Standard</title>
<author initials='R.' surname='Srinivasan' fullname='Raj Srinivasan'>
<organization>Sun Microsystems, Inc., ONC Technologies</organization>
<address>
<postal>
<street>2550 Garcia Avenue</street>
<street>M/S MTV-5-40</street>
<city>Mountain View</city>
<region>CA</region>
<code>94043</code>
<country>US</country></postal>
<phone>+1 415 336 2478</phone>
<facsimile>+1 415 336 6015</facsimile>
<email>raj@eng.sun.com</email></address></author>
<date month='August' year='1995' />
<abstract>
<t>This document describes the External Data Representation Standard (XDR) protocol as it is currently deployed and accepted.</t></abstract></front>

<seriesInfo name='RFC' value='1832' />
<format type='TXT' octets='47418' target='ftp://ftp.isi.edu/in-notes/rfc1832.txt' />
</reference>

                           

<reference anchor='RFC2045'>

<front>
<title abbrev='Internet Message Bodies'>Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies</title>
<author initials='N.' surname='Freed' fullname='Ned Freed'>
<organization>Innosoft International, Inc.</organization>
<address>
<postal>
<street>1050 East Garvey Avenue South</street>
<city>West Covina</city>
<region>CA</region>
<code>91790</code>
<country>US</country></postal>
<phone>+1 818 919 3600</phone>
<facsimile>+1 818 919 3614</facsimile>
<email>ned@innosoft.com</email></address></author>
<author initials='N.S.' surname='Borenstein' fullname='Nathaniel S. Borenstein'>
<organization>First Virtual Holdings</organization>
<address>
<postal>
<street>25 Washington Avenue</street>
<city>Morristown</city>
<region>NJ</region>
<code>07960</code>
<country>US</country></postal>
<phone>+1 201 540 8967</phone>
<facsimile>+1 201 993 3032</facsimile>
<email>nsb@nsb.fv.com</email></address></author>
<date month='November' year='1996' />
<abstract>
<t>STD 11, RFC 822, defines a message representation protocol specifying considerable detail about US-ASCII message headers, and leaves the message content, or message body, as flat US-ASCII text.  This set of documents, collectively called the Multipurpose Internet Mail Extensions, or MIME, redefines the format of messages to allow for</t>
<t>(1)   textual message bodies in character sets other than US-ASCII,</t>
<t>(2)   an extensible set of different formats for non-textual message bodies,</t>
<t>(3)   multi-part message bodies, and</t>
<t>(4)   textual header information in character sets other than US-ASCII.</t>
<t>These documents are based on earlier work documented in RFC 934, STD 11, and RFC 1049, but extends and revises them.  Because RFC 822 said so little about message bodies, these documents are largely orthogonal to (rather than a revision of) RFC 822.</t>
<t>This initial document specifies the various headers used to describe the structure of MIME messages. The second document, RFC 2046, defines the general structure of the MIME media typing system and defines an initial set of media types. The third document, RFC 2047, describes extensions to RFC 822 to allow non-US-ASCII text data in Internet mail header fields. The fourth document, RFC 2048, specifies various IANA registration procedures for MIME-related facilities. The fifth and final document, RFC 2049, describes MIME conformance
  criteria as well as providing some illustrative examples of MIME message formats, acknowledgements, and the bibliography.</t>
<t>These documents are revisions of RFCs 1521, 1522, and 1590, which themselves were revisions of RFCs 1341 and 1342.  An appendix in RFC 2049 describes differences and changes from previous versions.</t></abstract></front>

<seriesInfo name='RFC' value='2045' />
<format type='TXT' octets='72932' target='ftp://ftp.isi.edu/in-notes/rfc2045.txt' />
</reference>

                           

<reference anchor='RFC2234'>

<front>
<title abbrev='ABNF for Syntax Specifications'>Augmented BNF for Syntax Specifications: ABNF</title>
<author initials='D.H.' surname='Crocker' fullname='David H. Crocker'>
<organization>Internet Mail Consortium</organization>
<address>
<postal>
<street>675 Spruce Dr.</street>
<city>Sunnyvale</city>
<region>CA</region>
<code>94086</code>
<country>US</country></postal>
<phone>+1 408 246 8253</phone>
<facsimile>+1 408 249 6205</facsimile>
<email>dcrocker@imc.org</email></address></author>
<author initials='P.' surname='Overell' fullname='Paul Overell'>
<organization>Demon Internet Ltd</organization>
<address>
<postal>
<street>Dorking Business Park</street>
<street>Dorking</street>
<city>Surrey</city>
<region>England</region>
<code>RH4 1HN</code>
<country>UK</country></postal>
<email>paulo@turnpike.com</email></address></author>
<date month='November' year='1997' /></front>

<seriesInfo name='RFC' value='2234' />
<format type='TXT' octets='24265' target='ftp://ftp.isi.edu/in-notes/rfc2234.txt' />
</reference>

                           

<reference anchor='RFC2396'>

<front>
<title abbrev='URI Generic Syntax'>Uniform Resource Identifiers (URI): Generic Syntax</title>
<author initials='T.' surname='Berners-Lee' fullname='Tim Berners-Lee'>
<organization abbrev='MIT/LCS'>World Wide Web Consortium</organization>
<address>
<postal>
<street>MIT Laboratory for Computer Science, NE43-356</street>
<street>545 Technology Square</street>
<city>Cambridge</city>
<region>MA</region>
<code>02139</code></postal>
<facsimile>+1(617)258-8682</facsimile>
<email>timbl@w3.org</email></address></author>
<author initials='R.T.' surname='Fielding' fullname='Roy T. Fielding'>
<organization abbrev='U.C. Irvine'>Department of Information and Computer Science</organization>
<address>
<postal>
<street>University of California, Irvine</street>
<city>Irvine</city>
<region>CA</region>
<code>92697-3425</code></postal>
<facsimile>+1(949)824-1715</facsimile>
<email>fielding@ics.uci.edu</email></address></author>
<author initials='L.' surname='Masinter' fullname='Larry Masinter'>
<organization abbrev='Xerox Corporation'>Xerox PARC</organization>
<address>
<postal>
<street>3333 Coyote Hill Road</street>
<city>Palo Alto</city>
<region>CA</region>
<code>94034</code></postal>
<facsimile>+1(415)812-4333</facsimile>
<email>masinter@parc.xerox.com</email></address></author>
<date month='August' year='1998' />
<area>Applications</area>
<keyword>uniform resource</keyword>
<keyword>URI</keyword>
<abstract>
<t>
   A Uniform Resource Identifier (URI) is a compact string of characters
   for identifying an abstract or physical resource.  This document
   defines the generic syntax of URI, including both absolute and
   relative forms, and guidelines for their use; it revises and replaces
   the generic definitions in RFC 1738 and RFC 1808.
</t>
<t>
   This document defines a grammar that is a superset of all valid URI,
   such that an implementation can parse the common components of a URI
   reference without knowing the scheme-specific requirements of every
   possible identifier type.  This document does not define a generative
   grammar for URI; that task will be performed by the individual
   specifications of each URI scheme.
</t></abstract>
<note title='IESG Note'>
<t>
   This paper describes a "superset" of operations that can be applied
   to URI.  It consists of both a grammar and a description of basic
   functionality for URI.  To understand what is a valid URI, both the
   grammar and the associated description have to be studied.  Some of
   the functionality described is not applicable to all URI schemes, and
   some operations are only possible when certain media types are
   retrieved using the URI, regardless of the scheme used.
</t></note></front>

<seriesInfo name='RFC' value='2396' />
<format type='TXT' octets='83639' target='ftp://ftp.isi.edu/in-notes/rfc2396.txt' />
<format type='HTML' octets='114242' target='http://xml.resource.org/public/rfc/html/rfc2396.html' />
<format type='XML' octets='95582' target='http://xml.resource.org/public/rfc/xml/rfc2396.xml' />
</reference>

                           

<reference anchor='RFC2434'>

<front>
<title abbrev='Guidelines for IANA Considerations'>Guidelines for Writing an IANA Considerations Section in RFCs</title>
<author initials='T.' surname='Narten' fullname='Thomas Narten'>
<organization>IBM Corporation</organization>
<address>
<postal>
<street>3039 Cornwallis Ave.</street>
<street>PO Box 12195 - BRQA/502</street>
<street>Research Triangle Park</street>
<street>NC 27709-2195</street></postal>
<phone>919-254-7798</phone>
<email>narten@raleigh.ibm.com</email></address></author>
<author initials='H.T.' surname='Alvestrand' fullname='Harald Tveit Alvestrand'>
<organization>Maxware</organization>
<address>
<postal>
<street>Pirsenteret</street>
<street>N-7005 Trondheim</street>
<country>Norway</country></postal>
<phone>+47 73 54 57 97</phone>
<email>Harald@Alvestrand.no</email></address></author>
<date month='October' year='1998' />
<area>General</area>
<keyword>Internet Assigned Numbers Authority</keyword>
<keyword>IANA</keyword>
<abstract>
<t>
   Many protocols make use of identifiers consisting of constants and
   other well-known values. Even after a protocol has been defined and
   deployment has begun, new values may need to be assigned (e.g., for a
   new option type in DHCP, or a new encryption or authentication
   algorithm for IPSec).  To insure that such quantities have consistent
   values and interpretations in different implementations, their
   assignment must be administered by a central authority. For IETF
   protocols, that role is provided by the Internet Assigned Numbers
   Authority (IANA).
</t>
<t>
   In order for the IANA to manage a given name space prudently, it
   needs guidelines describing the conditions under which new values can
   be assigned. If the IANA is expected to play a role in the management
   of a name space, the IANA must be given clear and concise
   instructions describing that role.  This document discusses issues
   that should be considered in formulating a policy for assigning
   values to a name space and provides guidelines to document authors on
   the specific text that must be included in documents that place
   demands on the IANA.
</t></abstract></front>

<seriesInfo name='BCP' value='26' />
<seriesInfo name='RFC' value='2434' />
<format type='TXT' octets='25092' target='ftp://ftp.isi.edu/in-notes/rfc2434.txt' />
<format type='HTML' octets='37803' target='http://xml.resource.org/public/rfc/html/rfc2434.html' />
<format type='XML' octets='26924' target='http://xml.resource.org/public/rfc/xml/rfc2434.xml' />
</reference>

                           

<reference anchor='RFC2629'>

<front>
<title>Writing I-Ds and RFCs using XML</title>
<author initials='M.T.' surname='Rose' fullname='Marshall T. Rose'>
<organization>Invisible Worlds, Inc.</organization>
<address>
<postal>
<street>660 York Street</street>
<city>San Francisco</city>
<region>CA</region>
<code>94110</code>
<country>US</country></postal>
<phone>+1 415 695 3975</phone>
<email>mrose@not.invisible.net</email>
<uri>http://invisible.net/</uri></address></author>
<date month='June' year='1999' />
<area>General</area>
<keyword>RFC</keyword>
<keyword>Request for Comments</keyword>
<keyword>I-D</keyword>
<keyword>Internet-Draft</keyword>
<keyword>XML</keyword>
<keyword>Extensible Markup Language</keyword>
<abstract>
<t>This memo presents a technique for using XML
(Extensible Markup Language)
as a source format for documents in the Internet-Drafts (I-Ds) and
Request for Comments (RFC) series.</t></abstract></front>

<seriesInfo name='RFC' value='2629' />
<format type='TXT' octets='48677' target='ftp://ftp.isi.edu/in-notes/rfc2629.txt' />
<format type='HTML' octets='56453' target='http://xml.resource.org/public/rfc/html/rfc2629.html' />
<format type='XML' octets='47068' target='http://xml.resource.org/public/rfc/xml/rfc2629.xml' />
</reference>

                           

<reference anchor='RFC2781'>

<front>
<title>UTF-16, an encoding of ISO 10646</title>
<author initials='P.' surname='Hoffman' fullname='Paul Hoffman'>
<organization>Internet Mail Consortium</organization>
<address>
<postal>
<street>127 Segre Place</street>
<city>Santa Cruz</city>
<region>CA</region>
<code>95060</code>
<country>US</country></postal>
<email>phoffman@imc.org</email></address></author>
<author initials='F.' surname='Yergeau' fullname='Francois Yergeau'>
<organization>Alis Technologies</organization>
<address>
<postal>
<street>100, boul. Alexis-Nihon</street>
<street>Suite 600</street>
<city>Montreal</city>
<region>Quebec</region>
<code>H4M 2P2</code>
<country>CA</country></postal>
<email>fyergeau@alis.com</email></address></author>
<date month='February' year='2000' />
<abstract>
<t>This document describes the UTF-16 encoding of Unicode/ISO-10646, addresses the issues of serializing UTF-16 as an octet stream for transmission over the Internet, discusses MIME charset naming as described in [CHARSET-REG], and contains the registration for three MIME charset parameter values: UTF-16BE (big-endian), UTF-16LE (little-endian), and UTF-16.</t></abstract></front>

<seriesInfo name='RFC' value='2781' />
<format type='TXT' octets='29870' target='ftp://ftp.isi.edu/in-notes/rfc2781.txt' />
</reference>

                           

<reference anchor='RFC2821'>

<front>
<title>Simple Mail Transfer Protocol</title>
<author initials='J.' surname='Klensin' fullname='J. Klensin'>
<organization /></author>
<date month='April' year='2001' /></front>

<seriesInfo name='RFC' value='2821' />
<format type='TXT' octets='192504' target='ftp://ftp.isi.edu/in-notes/rfc2821.txt' />
</reference>

                           

<reference anchor='RFC3010'>

<front>
<title>NFS version 4 Protocol</title>
<author initials='S.' surname='Shepler' fullname='S. Shepler'>
<organization /></author>
<author initials='B.' surname='Callaghan' fullname='B. Callaghan'>
<organization /></author>
<author initials='D.' surname='Robinson' fullname='D. Robinson'>
<organization /></author>
<author initials='R.' surname='Thurlow' fullname='R. Thurlow'>
<organization /></author>
<author initials='C.' surname='Beame' fullname='C. Beame'>
<organization /></author>
<author initials='M.' surname='Eisler' fullname='M. Eisler'>
<organization /></author>
<author initials='D.' surname='Noveck' fullname='D. Noveck'>
<organization /></author>
<date month='December' year='2000' /></front>

<seriesInfo name='RFC' value='3010' />
<format type='TXT' octets='450434' target='ftp://ftp.isi.edu/in-notes/rfc3010.txt' />
</reference>

                           

<reference anchor='RFC3252'>

<front>
<title>Binary Lexical Octet Ad-hoc Transport</title>
<author initials='H.' surname='Kennedy' fullname='H. Kennedy'>
<organization /></author>
<date month='April' day='1' year='2002' /></front>

<seriesInfo name='RFC' value='3252' />
<format type='TXT' octets='25962' target='ftp://ftp.isi.edu/in-notes/rfc3252.txt' />
</reference>

                           

<reference anchor='RFC3367'>

<front>
<title>Common Name Resolution Protocol (CNRP)</title>
<author initials='N.' surname='Popp' fullname='N. Popp'>
<organization /></author>
<author initials='M.' surname='Mealling' fullname='M. Mealling'>
<organization /></author>
<author initials='M.' surname='Moseley' fullname='M. Moseley'>
<organization /></author>
<date month='August' year='2002' /></front>

<seriesInfo name='RFC' value='3367' />
<format type='TXT' octets='86889' target='ftp://ftp.isi.edu/in-notes/rfc3367.txt' />
</reference>

      
      <reference anchor="Backus">
        <front>
          <title>The syntax and semantics of the proposed international algebraic
          language of the Zurich ACM-GAMM conference</title>
          <author initials="J." surname="Backus" fullname="John Backus">
            <organization>Proceedings of the International Conference on
            Information Processing (ICIP)</organization>
          </author>
          <date year="1959" month="June"/>
        </front>
      </reference>
      
                           

<reference anchor="ANSI.X3-41.1974">
<front>
<title>Code Extension Techniques for Use with the 7-bit Coded Character Set of American National Standard Code (ASCII) for Information Interchange</title>
<author>
<organization>American National Standards Institute</organization>
</author>
<date year="1974" />
</front>

<seriesInfo name="ANSI" value="X3.41" />
<seriesInfo name="FIPS" value="PUB 35" />

</reference>

                           

<reference anchor="ANSI.Z39-50.1995">
<front>
<title>Information Retrieval: Application Service Definition and Protocol Specification</title>
<author>
<organization>American National Standards Institute</organization>
</author>
<date year="1995" />
</front>

<seriesInfo name="ANSI" value="Z39.50" />
<seriesInfo name="ISO" value="Standard 23950" />

</reference>

                           

<reference anchor="ISO.8824.1990">
<front>
<title>Information Processing Systems - Open Systems Interconnection - Specification of Abstract Syntax Notation One (ASN.1)</title>
<author>
<organization>International Organization for Standardization</organization>
</author>
<date month="December" year="1990" />
</front>

<seriesInfo name="ISO" value="Standard 8824" />

</reference>

                           

<reference anchor="ISO.8825.1990">
<front>
<title>Information Processing Systems - Open Systems Interconnection - Specification of Basic Encoding Rules for Abstract Syntax Notation One (ASN.1)</title>
<author>
<organization>International Organization for Standardization</organization>
</author>
<date month="December" year="1990" />
</front>

<seriesInfo name="ISO" value="Standard 8825" />

</reference>

                           

<reference anchor="ISO.8879.1988">
<front>
<title>Information processing - Text and office systems - Standard Generalized Markup Language (SGML)</title>
<author>
<organization>International Organization for Standardization</organization>
</author>
<date year="1988" />
</front>

<seriesInfo name="ISO" value="Standard 8879" />

</reference>

                           

<reference anchor="ISO.10646-1.1993">
<front>
<title>Information Technology - Universal Multiple-octet coded Character Set (UCS) - Part 1: Architecture and Basic Multilingual Plane</title>
<author>
<organization>International Organization for Standardization</organization>
</author>
<date month="May" year="1993" />
</front>

<seriesInfo name="ISO" value="Standard 10646-1" />

</reference>

      
      <reference anchor="DSDL"
       target="http://www.jtc1.org/FTP/Public/SC34/DOCREG/0275.htm">
        <front>
          <title>DSDL Part 0 - Overview</title>
          <author>
            <organization>International Organization for Standardization</organization>
          </author>
          <date year="2001" month="December" day="11"/>
        </front>
      </reference>
      
      <reference anchor="UNICODE"
       target="http://www.unicode.org/unicode/standard/standard.html">
        <front>
          <title>The Unicode Standard, as it may from time to time be revised
          or amended</title>
          <author>
            <organization>Unicode Consortium</organization>
          </author>
          <date year="2002" month="March" day="27"/>
        </front>
      </reference>
      
      <reference anchor="W3C.NOTE-UNICODE"
       target="http://www.w3.org/TR/unicode-xml/">
        <front>
          <title>Unicode in XML and other Markup Languages</title>
          <author initials="M." surname="Duerst" fullname="Martin Duerst">
            <organization>W3C</organization>
          </author>
          <author initials="A." surname="Freytag" fullname="Asmus Freytag">
            <organization>Unicode</organization>
          </author>
          <date year="2002" month="February" day="18"/>
        </front>
      </reference>
      
                           

<reference anchor="W3C.REC-xml-1998"
 target="http://www.w3.org/TR/1998/REC-xml-19980210/">
  <front>
    <title>Extensible Markup Language (XML) 1.0</title>
    <author initials="T." surname="Bray" fullname="Tim Bray">
      <organization>Textuality and Netscape</organization>
    </author>
    <author initials="J." surname="Paoli" fullname="Jean Paoli">
      <organization>Microsoft</organization>
    </author>
    <author initials="C. M." surname="Sperberg-McQueen"
            fullname="C. M. Sperberg-McQueen">
      <organization>University of Illinois at Chicago</organization>
    </author>
    <date year="1998" month="February" day="10"/>
  </front>
  <seriesInfo name="W3C" value="REC-xml-1998"/>
</reference>

      
      <reference anchor="W3C.REC-xmlbase"
       target="http://www.w3.org/TR/xmlbase/">
        <front>
          <title>XML Base</title>
          <author initials="J." surname="Marsh" fullname="Jonathan Marsh">
            <organization>Microsoft</organization>
          </author>
          <date year="2001" month="June" day="27"/>
        </front>
        <seriesInfo name="W3C" value="REC-xmlbase" />
      </reference>
      
      <reference anchor="W3C.REC-infoset"
       target="http://www.w3.org/TR/xml-infoset/">
        <front>
          <title>XML Information Set</title>
          <author initials="J." surname="Cowan" fullname="John Cowan">
          <organization/></author>
          <author initials="R." surname="Tobin" fullname="Richard Tobin">
          <organization/></author>
          <date year="2001" month="October" day="24"/>
        </front>
        <seriesInfo name="W3C" value="REC-infoset" />
      </reference>
      
                           

<reference anchor="W3C.REC-rdf-syntax" target="http://www.w3.org/TR/REC-rdf-syntax">
  <front>
    <title>Resource Description Framework (RDF) Model and Syntax Specification</title>
    <author initials="O." surname="Lassila" fullname="Ora Lassila">
      <organization>Nokia Research Centre</organization>
      <address>
        <email>ora.lassila@research.nokia.com</email>
      </address>
    </author>
    <author initials="R." surname="Swick" fullname="Ralph Swick">
      <organization abbrev="W3C">World Wide Web Consortium</organization>
      <address>
        <postal>
          <street>MIT Laboratory for Computer Science</street>
          <street>545 Technology Square</street>
          <city>Cambridge</city> <region>MA</region> <code>02139</code>
          <country>US</country>
        </postal>
        <phone>+ 1 617 253 2613</phone>
        <facsimile>+ 1 617 258 5999</facsimile>
        <email>swick@w3.org</email>
        <uri>http://www.w3c.org</uri>
      </address>
    </author>
    <date day="22" month="February" year="1999"/>
  </front>
  <seriesInfo name="W3C" value="REC-rdf-syntax"/>
</reference>


                           

<reference anchor="W3C.REC-RUBY"
 target="http://www.w3.org/TR/ruby/">
  <front>
    <title>Ruby Annotation</title>
    <author initials="M." surname="Suignard" fullname="Michel Suignard">
      <organization>Microsoft</organization>
    </author>
    <author initials="M." surname="Ishikawa" fullname="Masayasu Ishikawa">
      <organization>W3C</organization>
    </author>
    <author initials="M." surname="Duerst" fullname="Martin Duerst">
      <organization>W3C</organization>
    </author>
    <author initials="T." surname="Texin" fullname="Tex Texin">
      <organization>Progress Software Corp.</organization>
    </author>
    <date year="2001" month="May" day="31"/>
  </front>
  <seriesInfo name="W3C" value="REC-RUBY"/>
</reference>

                           
<reference anchor="W3C.REC-XHTML"
 target="http://www.w3.org/TR/xhtml1/">
  <front>
    <title>XHTML 1.0: The Extensible HyperText Markup Language</title>
    <author initials="S." surname="Pemberton" fullname="Steven Pemberton">
      <organization>CWI</organization>
    </author>
    <date year="2000" month="January" day="26"/>
  </front>
  <seriesInfo name="W3C" value="REC-XHTML"/>
</reference>

                           

<reference anchor="W3C.REC-xmlschema-1"
 target="http://www.w3.org/TR/xmlschema-1/">
  <front>
    <title>XML Schema Part 1: Structures</title>
    <author initials="H." surname="Thompson" fullname="Henry S. Thompson">
      <organization>University of Edinburgh</organization>
    </author>
    <author initials="D." surname="Beech" fullname="David Beech">
      <organization>Oracle Corporation</organization>
    </author>
    <author initials="M." surname="Maloney" fullname="Murray Maloney">
      <organization>Commerce One</organization>
    </author>
    <author initials="N." surname="Mendelsohn" fullname="Noah Mendelsohn">
      <organization>Lotus Development Corporation</organization>
    </author>
    <date year="2001" month="May" day="2"/>
  </front>
  <seriesInfo name="W3C" value="REC-xmlschema-1"/>
</reference>


                           

<reference anchor="W3C.REC-xmlschema-2"
 target="http://www.w3.org/TR/xmlschema-2/">
  <front>
    <title>XML Schema Part 2: Datatypes</title>
    <author initials="P." surname="Biron" fullname="Paul V. Biron">
      <organization>Kaiser Permanente</organization>
    </author>
    <author initials="A." surname="Malhotra" fullname="Ashok Malhotra">
      <organization>Microsoft</organization>
    </author>
    <date year="2001" month="May" day="2"/>
  </front>
  <seriesInfo name="W3C" value="REC-xmlschema-2"/>
</reference>


      <reference anchor="W3C.REC-xslt"
       target="http://www.w3.org/TR/xslt">
        <front>
          <title>XSL Transformations (XSLT) Version 1.0</title> 
          <author initials="J." surname="Clark" fullname="James Clark">
          <organization/></author>
          <date day="16" month="November" year="1999"/> 
        </front>
        <seriesInfo name="W3C" value="REC-xslt"/> 
      </reference>

      <reference anchor="W3C.WD-CHARMOD"
       target="http://www.w3.org/TR/charmod/">
        <front>
          <title>Character Model for the World Wide Web 1.0</title>
          <author initials="M." surname="Duerst" fullname="Martin Duerst">
            <organization>W3C</organization>
          </author>
          <author initials="F." surname="Yergeau" fullname="Francois Yergeau">
            <organization>Alis Technologies</organization>
          </author>
          <author initials="R." surname="Ishida" fullname="Richard Ishida">
            <organization>Xerox, GKLS</organization>
          </author>
          <author initials="M." surname="Wolf" fullname="Misha Wolf">
            <organization>Reuters Ltd.</organization>
          </author>
          <author initials="A." surname="Freytag" fullname="Asmus Freytag">
            <organization>ASMUS, Inc.</organization>
          </author>
          <author initials="T." surname="Texin" fullname="Tex Texin">
            <organization>Progress Software Corp.</organization>
          </author>
          <date year="2002" month="April" day="30"/>
        </front>
      </reference>
      
      <reference anchor="W3C.WD-SOAP-1"
       target="http://www.w3.org/TR/soap12-part1/">
        <front>
          <title>SOAP Version 1.2 Part 1: Messaging Framework</title>
          <author initials="M." surname="Gudgin" fullname="Martin Gudgin">
            <organization>DevelopMentor</organization>
          </author>
          <author initials="M." surname="Hadley" fullname="Marc Hadley">
            <organization>Sun Microsystems</organization>
          </author>
          <author initials="JJ." surname="Moreau" fullname="Jean-Jacques Moreau">
            <organization>Canon</organization>
          </author>
          <author initials="H. F." surname="Nielsen"
           fullname="Henrik Frystyk Nielsen">
            <organization>Microsoft</organization>
          </author>
          <date year="2002" month="June" day="26"/>
        </front>
      </reference>
      
      <reference anchor="W3C.WD-SOAP-2"
       target="http://www.w3.org/TR/soap12-part2/">
        <front>
          <title>SOAP Version 1.2 Part 2: Adjuncts</title>
          <author initials="M." surname="Gudgin" fullname="Martin Gudgin">
            <organization>DevelopMentor</organization>
          </author>
          <author initials="M." surname="Hadley" fullname="Marc Hadley">
            <organization>Sun Microsystems</organization>
          </author>
          <author initials="JJ." surname="Moreau" fullname="Jean-Jacques Moreau">
            <organization>Canon</organization>
          </author>
          <author initials="H. F." surname="Nielsen"
           fullname="Henrik Frystyk Nielsen">
            <organization>Microsoft</organization>
          </author>
          <date year="2002" month="June" day="26"/>
        </front>
      </reference>
      
      <reference anchor="W3C.XML-points"
       target="http://www.w3.org/XML/1999/XML-in-10-points">
        <front>
          <title>XML in 10 points</title>
          <author fullname="W3C Communications Team">
            <organization abbrev="W3C">W3C Communications Team</organization>
          </author>
          <date year="2001" month="November"/>
        </front>
      </reference>
      
      <reference anchor="RELAX-NG"
       target="http://www.oasis-open.org/committees/relax-ng/spec-20011203.html">
        <front>
          <title>RELAX NG Specification</title>
          <author>
            <organization>OASIS Technical Committee: RELAX NG</organization>
          </author>
          <date year="2001" month="December" day="03"/>
        </front>
      </reference>
      
      <reference anchor="Schematron"
       target="http://www.ascc.net/xml/schematron/">
        <front>
          <title>The Schematron</title>
          <author initials="R." surname="Jelliffe" fullname="Rick Jelliffe">
            <organization>Academia Sinica Computing Centre</organization>
          </author>
          <date year="2001" month="November" day="10"/>
        </front>
      </reference>
    </references>
  </back>
</rfc>

