{\rtf1\ansi\ansicpg1252\uc1 \deff0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;}
{\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f3\froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f50\froman\fcharset238\fprq2 Times New Roman CE;}{\f51\froman\fcharset204\fprq2 Times New Roman Cyr;}
{\f53\froman\fcharset161\fprq2 Times New Roman Greek;}{\f54\froman\fcharset162\fprq2 Times New Roman Tur;}{\f55\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f56\fswiss\fcharset238\fprq2 Arial CE;}{\f57\fswiss\fcharset204\fprq2 Arial Cyr;}
{\f59\fswiss\fcharset161\fprq2 Arial Greek;}{\f60\fswiss\fcharset162\fprq2 Arial Tur;}{\f61\fswiss\fcharset186\fprq2 Arial Baltic;}{\f62\fmodern\fcharset238\fprq1 Courier New CE;}{\f63\fmodern\fcharset204\fprq1 Courier New Cyr;}
{\f65\fmodern\fcharset161\fprq1 Courier New Greek;}{\f66\fmodern\fcharset162\fprq1 Courier New Tur;}{\f67\fmodern\fcharset186\fprq1 Courier New Baltic;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;
\red192\green192\blue192;}{\stylesheet{\sb120\nowidctlpar\widctlpar\adjustright \fs20\cgrid \snext0 Normal;}{\s1\fi-432\li432\sb240\sa60\keepn\nowidctlpar\widctlpar\jclisttab\tx432\ls2\adjustright \b\f1\fs28\kerning28\cgrid \sbasedon0 \snext0 heading 1;}{
\s2\fi-576\li576\sb240\sa60\keepn\nowidctlpar\widctlpar\jclisttab\tx576\ls2\ilvl1\adjustright \b\i\f1\cgrid \sbasedon0 \snext0 heading 2;}{\s3\fi-720\li720\sb240\sa60\keepn\nowidctlpar\widctlpar\jclisttab\tx720\ls2\ilvl2\adjustright \f1\cgrid
\sbasedon0 \snext0 heading 3;}{\s4\fi-864\li864\sb240\sa60\keepn\nowidctlpar\widctlpar\jclisttab\tx864\ls2\ilvl3\adjustright \b\f1\cgrid \sbasedon0 \snext0 heading 4;}{\s5\fi-1008\li1008\sb240\sa60\nowidctlpar\widctlpar
\jclisttab\tx1008\ls2\ilvl4\adjustright \fs22\cgrid \sbasedon0 \snext0 heading 5;}{\s6\fi-1152\li1152\sb240\sa60\nowidctlpar\widctlpar\jclisttab\tx1152\ls2\ilvl5\adjustright \i\fs22\cgrid \sbasedon0 \snext0 heading 6;}{
\s7\fi-1296\li1296\sb240\sa60\nowidctlpar\widctlpar\jclisttab\tx1296\ls2\ilvl6\adjustright \f1\fs20\cgrid \sbasedon0 \snext0 heading 7;}{\s8\fi-1440\li1440\sb240\sa60\nowidctlpar\widctlpar\jclisttab\tx1440\ls2\ilvl7\adjustright \i\f1\fs20\cgrid
\sbasedon0 \snext0 heading 8;}{\s9\fi-1584\li1584\sb240\sa60\nowidctlpar\widctlpar\jclisttab\tx1584\ls2\ilvl8\adjustright \b\i\f1\fs18\cgrid \sbasedon0 \snext0 heading 9;}{\*\cs10 \additive Default Paragraph Font;}{
\s15\li720\nowidctlpar\widctlpar\adjustright \f2\fs20\cgrid \sbasedon0 \snext15 code;}{\s16\sb120\nowidctlpar\widctlpar\tqc\tx4320\tqr\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext16 header;}{\s17\sb120\nowidctlpar\widctlpar
\tqc\tx4320\tqr\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext17 footer;}{\*\cs18 \additive \sbasedon10 page number;}{\s19\sb120\sa120\nowidctlpar\widctlpar\adjustright \b\caps\fs20\cgrid \sbasedon0 \snext0 toc 1;}{
\s20\li200\nowidctlpar\widctlpar\adjustright \scaps\fs20\cgrid \sbasedon0 \snext0 toc 2;}{\s21\li400\nowidctlpar\widctlpar\adjustright \i\fs20\cgrid \sbasedon0 \snext0 toc 3;}{\s22\li600\nowidctlpar\widctlpar\adjustright \fs18\cgrid \sbasedon0 \snext0
toc 4;}{\s23\li800\nowidctlpar\widctlpar\adjustright \fs18\cgrid \sbasedon0 \snext0 toc 5;}{\s24\li1000\nowidctlpar\widctlpar\adjustright \fs18\cgrid \sbasedon0 \snext0 toc 6;}{\s25\li1200\nowidctlpar\widctlpar\adjustright \fs18\cgrid \sbasedon0 \snext0
toc 7;}{\s26\li1400\nowidctlpar\widctlpar\adjustright \fs18\cgrid \sbasedon0 \snext0 toc 8;}{\s27\li1600\nowidctlpar\widctlpar\adjustright \fs18\cgrid \sbasedon0 \snext0 toc 9;}}{\*\listtable{\list\listtemplateid-1\listsimple{\listlevel\levelnfc0\leveljc0
\levelfollow0\levelstartat0\levelspace0\levelindent0{\leveltext\'01*;}{\levelnumbers;}}{\listname ;}\listid-2}{\list\listtemplateid67698725{\listlevel\levelnfc0\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
\'01\'00;}{\levelnumbers\'01;}\s1\fi-432\li432\jclisttab\tx432 }{\listlevel\levelnfc0\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03\'00.\'01;}{\levelnumbers\'01\'03;}\s2\fi-576\li576\jclisttab\tx576 }{\listlevel\levelnfc0
\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'05\'00.\'01.\'02;}{\levelnumbers\'01\'03\'05;}\s3\fi-720\li720\jclisttab\tx720 }{\listlevel\levelnfc0\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
\'07\'00.\'01.\'02.\'03;}{\levelnumbers\'01\'03\'05\'07;}\s4\fi-864\li864\jclisttab\tx864 }{\listlevel\levelnfc0\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'09\'00.\'01.\'02.\'03.\'04;}{\levelnumbers\'01\'03\'05\'07\'09;}\s5
\fi-1008\li1008\jclisttab\tx1008 }{\listlevel\levelnfc0\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'0b\'00.\'01.\'02.\'03.\'04.\'05;}{\levelnumbers\'01\'03\'05\'07\'09\'0b;}\s6\fi-1152\li1152\jclisttab\tx1152 }{\listlevel
\levelnfc0\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'0d\'00.\'01.\'02.\'03.\'04.\'05.\'06;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d;}\s7\fi-1296\li1296\jclisttab\tx1296 }{\listlevel\levelnfc0\leveljc0\levelfollow0
\levelstartat1\levelspace0\levelindent0{\leveltext\'0f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f;}\s8\fi-1440\li1440\jclisttab\tx1440 }{\listlevel\levelnfc0\leveljc0\levelfollow0\levelstartat1\levelspace0
\levelindent0{\leveltext\'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f\'11;}\s9\fi-1584\li1584\jclisttab\tx1584 }{\listname ;}\listid335159928}}{\*\listoverridetable{\listoverride\listid-2
\listoverridecount1{\lfolevel\listoverrideformat{\listlevel\levelnfc23\leveljc0\levelfollow0\levelstartat1\levelold\levelspace0\levelindent360{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li360 }}\ls1}{\listoverride\listid335159928
\listoverridecount0\ls2}}{\info{\title XML For IPP}{\author paulmo}{\operator JK Martin}{\creatim\yr1998\mo2\dy11\hr14\min29}{\revtim\yr1998\mo2\dy11\hr14\min29}{\printim\yr1998\mo2\dy11\hr14\min29}{\version2}{\edmins0}{\nofpages11}{\nofwords2478}
{\nofchars14127}{\*\company msft}{\nofcharsws17348}{\vern71}}\widowctrl\ftnbj\aenddoc\lytprtmet\hyphcaps0\formshade\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot \fet0\sectd \linex0\endnhere\sectdefaultcl {\header \pard\plain
\s16\sb120\nowidctlpar\widctlpar\tqc\tx4320\tqr\tx8640\adjustright \fs20\cgrid {INTERNET-DRAFT\tab A proposed mapping of IPP onto XML\tab xxxxx,xxx 1998
\par }}{\footer \pard\plain \s17\sb120\nowidctlpar\widctlpar\tqc\tx4320\tqr\tx8640\adjustright \fs20\cgrid {Moore\tab xxxx,xxx, 1998\tab page }{\field{\*\fldinst {\cs18 PAGE }}{\fldrslt {\cs18\lang1024 1}}}{\cs18 of }{\field{\*\fldinst {\cs18 NUMPAGES }
}{\fldrslt {\cs18\lang1024 11}}}{
\par }}{\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}
{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8
\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \qc\sb120\nowidctlpar\widctlpar\adjustright \fs20\cgrid {\b\fs28
\par
\par
\par A proposed mapping of IPP onto XML
\par }{Author: Paul Moore, Microsoft Corporation
\par }\pard \sb120\nowidctlpar\widctlpar\adjustright {\tab
\par This document is an Internet-Draft. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other g
roups may also distribute working documents as Internet-Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet- Drafts as
reference material or to cite them other than as "work in progress." To view the entire list of current Internet-Drafts, please check the "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow Directories on ftp.is.co.za (Africa), ftp.nordu.n
et (Europe), munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or ftp.isi.edu (US West Coast).
\par
\par }{\b Abstract:
\par }{This document details a method of expressing the current IPP model and semantics definition [MODEL] in XML.
\par It is assumed that the reader is familiar with the current set of IPP proposals.
\par }\pard \qc\sb120\nowidctlpar\widctlpar\adjustright {\b\fs28 \page
\par }\pard\plain \s19\sb120\sa120\nowidctlpar\widctlpar\tx400\tqr\tldot\tx8630\adjustright \b\caps\fs20\cgrid {\field\fldedit{\*\fldinst { TOC \\o "1-3" }}{\fldrslt {\lang1024 1\tab Basic Encoding Rules\tab }{\field{\*\fldinst {\lang1024
PAGEREF _Toc411586090 \\h }{\lang1024 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f0063003400310031003500380036003000390030000000}}}{\fldrslt {\lang1024 3}}}{\lang1024
\par 2\tab Request encoding\tab }{\field{\*\fldinst {\lang1024 PAGEREF _Toc411586091 \\h }{\lang1024 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f0063003400310031003500380036003000390031000000}}}{\fldrslt {\lang1024 3}}}{
\lang1024
\par }\pard\plain \s20\li200\nowidctlpar\widctlpar\tx800\tqr\tldot\tx8630\adjustright \scaps\fs20\cgrid {\lang1024 2.1\tab Operation attributes\tab }{\field{\*\fldinst {\lang1024 PAGEREF _Toc411586092 \\h }{\lang1024 {\*\datafield
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f0063003400310031003500380036003000390032000000}}}{\fldrslt {\lang1024 4}}}{\lang1024
\par }\pard\plain \s19\sb120\sa120\nowidctlpar\widctlpar\tx400\tqr\tldot\tx8630\adjustright \b\caps\fs20\cgrid {\lang1024 3\tab Attribute mapping\tab }{\field{\*\fldinst {\lang1024 PAGEREF _Toc411586093 \\h }{\lang1024 {\*\datafield
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f0063003400310031003500380036003000390033000000}}}{\fldrslt {\lang1024 4}}}{\lang1024
\par }\pard\plain \s20\li200\nowidctlpar\widctlpar\tx800\tqr\tldot\tx8630\adjustright \scaps\fs20\cgrid {\lang1024 3.1\tab Qualification\tab }{\field{\*\fldinst {\lang1024 PAGEREF _Toc411586094 \\h }{\lang1024 {\*\datafield
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f0063003400310031003500380036003000390034000000}}}{\fldrslt {\lang1024 4}}}{\lang1024
\par 3.2\tab Simple types mapping\tab }{\field{\*\fldinst {\lang1024 PAGEREF _Toc411586095 \\h }{\lang1024 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f0063003400310031003500380036003000390035000000}}}{\fldrslt {\lang1024
5}}}{\lang1024
\par }\pard\plain \s19\sb120\sa120\nowidctlpar\widctlpar\tx400\tqr\tldot\tx8630\adjustright \b\caps\fs20\cgrid {\lang1024 4\tab Object Attributes\tab }{\field{\*\fldinst {\lang1024 PAGEREF _Toc411586096 \\h }{\lang1024 {\*\datafield
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f0063003400310031003500380036003000390036000000}}}{\fldrslt {\lang1024 5}}}{\lang1024
\par 5\tab Compound and meta-type mapping\tab }{\field{\*\fldinst {\lang1024 PAGEREF _Toc411586097 \\h }{\lang1024 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f0063003400310031003500380036003000390037000000}}}{\fldrslt {
\lang1024 6}}}{\lang1024
\par }\pard\plain \s20\li200\nowidctlpar\widctlpar\tx800\tqr\tldot\tx8630\adjustright \scaps\fs20\cgrid {\lang1024 5.1\tab Resolution\tab }{\field{\*\fldinst {\lang1024 PAGEREF _Toc411586098 \\h }{\lang1024 {\*\datafield
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f0063003400310031003500380036003000390038000000}}}{\fldrslt {\lang1024 6}}}{\lang1024
\par 5.2\tab Range of Integer\tab }{\field{\*\fldinst {\lang1024 PAGEREF _Toc411586099 \\h }{\lang1024 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f0063003400310031003500380036003000390039000000}}}{\fldrslt {\lang1024 6}}}
{\lang1024
\par 5.3\tab Setof\tab }{\field{\*\fldinst {\lang1024 PAGEREF _Toc411586100 \\h }{\lang1024 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f0063003400310031003500380036003100300030000000}}}{\fldrslt {\lang1024 6}}}{\lang1024
\par 5.4\tab Attribute groups\tab }{\field{\*\fldinst {\lang1024 PAGEREF _Toc411586101 \\h }{\lang1024 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f0063003400310031003500380036003100300031000000}}}{\fldrslt {\lang1024 7}}}
{\lang1024
\par }\pard\plain \s19\sb120\sa120\nowidctlpar\widctlpar\tx400\tqr\tldot\tx8630\adjustright \b\caps\fs20\cgrid {\lang1024 6\tab Use of DTD\tab }{\field{\*\fldinst {\lang1024 PAGEREF _Toc411586102 \\h }{\lang1024 {\*\datafield
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f0063003400310031003500380036003100300032000000}}}{\fldrslt {\lang1024 10}}}{\lang1024
\par 7\tab Examples\tab }{\field{\*\fldinst {\lang1024 PAGEREF _Toc411586103 \\h }{\lang1024 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f0063003400310031003500380036003100300033000000}}}{\fldrslt {\lang1024 7}}}{
\lang1024
\par }\pard\plain \s20\li200\nowidctlpar\widctlpar\tx800\tqr\tldot\tx8630\adjustright \scaps\fs20\cgrid {\lang1024 7.1\tab Print-job\tab }{\field{\*\fldinst {\lang1024 PAGEREF _Toc411586104 \\h }{\lang1024 {\*\datafield
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f0063003400310031003500380036003100300034000000}}}{\fldrslt {\lang1024 7}}}{\lang1024
\par 7.2\tab Print-job Response (OK)\tab }{\field{\*\fldinst {\lang1024 PAGEREF _Toc411586105 \\h }{\lang1024 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f0063003400310031003500380036003100300035000000}}}{\fldrslt {
\lang1024 8}}}{\lang1024
\par 7.3\tab Print-job Response (Failed)\tab }{\field{\*\fldinst {\lang1024 PAGEREF _Toc411586106 \\h }{\lang1024 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f0063003400310031003500380036003100300036000000}}}{\fldrslt {
\lang1024 8}}}{\lang1024
\par 7.4\tab Print-URI request\tab }{\field{\*\fldinst {\lang1024 PAGEREF _Toc411586107 \\h }{\lang1024 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f0063003400310031003500380036003100300037000000}}}{\fldrslt {\lang1024 8}
}}{\lang1024
\par 7.5\tab Create-Job request\tab }{\field{\*\fldinst {\lang1024 PAGEREF _Toc411586108 \\h }{\lang1024 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f0063003400310031003500380036003100300038000000}}}{\fldrslt {\lang1024 9}
}}{\lang1024
\par 7.6\tab Get-Jobs request & response\tab }{\field{\*\fldinst {\lang1024 PAGEREF _Toc411586109 \\h }{\lang1024 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f0063003400310031003500380036003100300039000000}}}{\fldrslt {
\lang1024 9}}}{\lang1024
\par }\pard\plain \s19\sb120\sa120\nowidctlpar\widctlpar\tx400\tqr\tldot\tx8630\adjustright \b\caps\fs20\cgrid {\lang1024 8\tab A full OO representation\tab }{\field{\*\fldinst {\lang1024 PAGEREF _Toc411586110 \\h }{\lang1024 {\*\datafield
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f0063003400310031003500380036003100310030000000}}}{\fldrslt {\lang1024 10}}}{\lang1024
\par }\pard\plain \sb120\nowidctlpar\widctlpar\adjustright \fs20\cgrid }}\pard\plain \sb120\nowidctlpar\widctlpar\adjustright \fs20\cgrid {
\par {\listtext\pard\plain\s1 \b\f1\fs28\kerning28\cgrid \hich\af1\dbch\af0\loch\f1 1\tab}}\pard\plain \s1\fi-432\li432\sb240\sa60\keepn\nowidctlpar\widctlpar\jclisttab\tx432\ls2\outlinelevel0\adjustright \b\f1\fs28\kerning28\cgrid {\page
{\*\bkmkstart _Toc411586090}Basic Encoding Rules{\*\bkmkend _Toc411586090}
\par }\pard\plain \sb120\nowidctlpar\widctlpar\adjustright \fs20\cgrid {IPP requests are encoded as HTTP messages sent by POST. The responses to those requests are delivered in the HTTP reply to the POST.
\par HTTP 1.1 chunked encoding may be used in the case where the message length is not known in advance.
\par The HTTP POST carrying the IPP protocol is normally multi-part MIME format. If the IPP request contains no raw data (PDL for example) then it may be sent using MIME type text/xml.
\par The response rules are the same; if raw data is present then multi-part MIME must be used, otherwise it is optional.
\par There will always be at least one text/XML part. There may be additional parts, in particular there may be an opaque section containing the PDL.
\par
\par }\pard\plain \s15\li720\nowidctlpar\widctlpar\adjustright \f2\fs20\cgrid {Content-type:multipart/mixed;
\par Boundary=\rdblquote A string That does not occur elsewhere\rdblquote ;
\par --A string That does not occur elsewhere
\par Content-Type: text/xml
\par [IPP request]
\par --A string That does not occur elsewhere
\par Content-Type: Application/octet-string
\par [PDL]
\par --A string That does not occur elsewhere\emdash
\par }\pard\plain \sb120\nowidctlpar\widctlpar\adjustright \fs20\cgrid {A request or response is contained within one XML block. (This allows multiple requests to be encoded in the future)
\par
\par }\pard\plain \s15\li720\nowidctlpar\widctlpar\adjustright \f2\fs20\cgrid {
\par }{\f0 or}{
\par \'85\'85\'85.
\par }{\f0 or}{
\par }\pard\plain \sb120\nowidctlpar\widctlpar\adjustright \fs20\cgrid {Nothing may appear outside the request/response block within a given multi-part sub-block.
\par The character set is always UTF-8. The mandatory attribute attribute-charset is thus not included in any request or response.
\par Attributes are expressed as XML elements (as opposed to XML attributes). XML attributes are used to qualify or modify the meaning of a given attribute (language, type or character set for example). Note the potential for confusion here \endash
XML uses the term \lquote attribute\rquote so does [MODEL]. This document will refer to IPP attributes as \lquote attributes\rquote and XML attributes as \lquote XML attributes\rquote .
\par IPP Attribute names as XML element names and XML attributes names as qualifier
s are case sensitive (following XML standards) and must therefore be expressed exactly as they are defined in [MODEL]. All other strings have case sensitivity as defined in [MODEL].
\par Leading and trailing spaces are significant in all values. This may mean that they are invalid in some contexts (numeric strings for example).
\par No ordering of attributes is implied or required other than that explicitly stated.
\par {\*\bkmkstart _Toc411586091}{\listtext\pard\plain\s1 \b\f1\fs28\kerning28\cgrid \hich\af1\dbch\af0\loch\f1 2\tab}}\pard\plain \s1\fi-432\li432\sb240\sa60\keepn\nowidctlpar\widctlpar\jclisttab\tx432\ls2\outlinelevel0\adjustright \b\f1\fs28\kerning28\cgrid
{Request encoding{\*\bkmkend _Toc411586091}
\par }\pard\plain \sb120\nowidctlpar\widctlpar\adjustright \fs20\cgrid {A request always specifies the operation, the request-id, language and the version of that operation.
\par A response always specifies the operation and request-id to which it is a response, the language and the version of that response.
\par These attributes must appear before any other attributes. They may appear in any order.
\par
\par }\pard\plain \s15\li720\nowidctlpar\widctlpar\adjustright \f2\fs20\cgrid {
\par }\pard \s15\li1440\nowidctlpar\widctlpar\adjustright {print-job
\par 1.0
\par 123
\par en
\par [remainder of request]
\par }\pard \s15\li720\nowidctlpar\widctlpar\adjustright {
\par {\*\bkmkstart _Toc411586092}{\listtext\pard\plain\s2 \b\i\f1\cgrid \hich\af1\dbch\af0\loch\f1 2.1\tab}}\pard\plain \s2\fi-576\li576\sb240\sa60\keepn\nowidctlpar\widctlpar\jclisttab\tx576\ls2\ilvl1\outlinelevel1\adjustright \b\i\f1\cgrid {
Operation attributes{\*\bkmkend _Toc411586092}
\par }\pard\plain \sb120\nowidctlpar\widctlpar\adjustright \fs20\cgrid {Attributes that apply to the request directly (these were once called parameters) appear at the same structure level as the operation and version attributes.
\par
\par }\pard\plain \s15\li720\nowidctlpar\widctlpar\adjustright \f2\fs20\cgrid {
\par }\pard \s15\li1440\nowidctlpar\widctlpar\adjustright {get-jobs
\par 1.0
\par 123
\par en
\par 1
\par }\pard \s15\li720\nowidctlpar\widctlpar\adjustright {
\par {\*\bkmkstart _Toc411586093}{\listtext\pard\plain\s1 \b\f1\fs28\kerning28\cgrid \hich\af1\dbch\af0\loch\f1 3\tab}}\pard\plain \s1\fi-432\li432\sb240\sa60\keepn\nowidctlpar\widctlpar\jclisttab\tx432\ls2\outlinelevel0\adjustright \b\f1\fs28\kerning28\cgrid
{Attribute mapping{\*\bkmkend _Toc411586093}
\par }\pard\plain \sb120\nowidctlpar\widctlpar\adjustright \fs20\cgrid {
An attribute is encoded as an XML element. The value is the element value. All values are expressed as character strings which may have to be translated by the receiver into the appropriate type (integer for example).
\par The element name is the name of the attribute as specified in [MODEL]
\par Empty values are represented by an empty element. This includes the out of band values \lquote unknown\rquote and \lquote no-value\rquote .
\par The out of ban value \lquote unsupported\rquote does not have any explicit encoding. The only place it occurs in [MODEL] is in the psuedo-1setof attribute \lquote Unsupported-Attributes\rquote \endash the \lquote unsupported\rquote
nature of the value is therefore implied by the context.
\par {\*\bkmkstart _Toc411586094}{\listtext\pard\plain\s2 \b\i\f1\cgrid \hich\af1\dbch\af0\loch\f1 3.1\tab}}\pard\plain \s2\fi-576\li576\sb240\sa60\keepn\nowidctlpar\widctlpar\jclisttab\tx576\ls2\ilvl1\outlinelevel1\adjustright \b\i\f1\cgrid {Qualification
{\*\bkmkend _Toc411586094}
\par }\pard\plain \sb120\nowidctlpar\widctlpar\adjustright \fs20\cgrid {An attribute value may be qualified by the use of XML attributes for the element. The following qualifiers are defined: -
\par }{\b\i Type:}{ This defines the type of the element (Integer, Boolean, etc.) as defined in the model document. This is optional and may be used to disambiguate. The type values themselves are expressed as Ke
ywords as defined in [MODEL]. Eg type=integer or type=Keyword
\par }{\b\i Lang:}{ This specifies the human readable language of the attribute. This is optional for all name and text types. Including it means that the attribute becomes and xxxWithLanguage as opposed to a
plain xxx. The representation of the language name is that defined in [MODEL] (eg RFC1766). Example \lquote lang=fr\rquote
\par Qualifiers themselves are a type4 keyword.
\par Examples: -
\par Foo1 is a text attribute, value \ldblquote bar\rdblquote
\par
\par }\pard\plain \s15\li720\nowidctlpar\widctlpar\adjustright \f2\fs20\cgrid {bar
\par }\pard\plain \sb120\nowidctlpar\widctlpar\adjustright \fs20\cgrid {Same, but language is overridden to \lquote de\rquote
\par
\par }\pard\plain \s15\li720\nowidctlpar\widctlpar\adjustright \f2\fs20\cgrid {bar
\par }\pard\plain \sb120\nowidctlpar\widctlpar\adjustright \fs20\cgrid {Same, but no value
\par
\par }\pard\plain \s15\li720\nowidctlpar\widctlpar\adjustright \f2\fs20\cgrid { (or should it be )
\par }\pard\plain \sb120\nowidctlpar\widctlpar\adjustright \fs20\cgrid {Foo2 is an integer, value 1
\par
\par }\pard\plain \s15\li720\nowidctlpar\widctlpar\adjustright \f2\fs20\cgrid {1
\par }\pard\plain \sb120\nowidctlpar\widctlpar\adjustright \fs20\cgrid {Same, but type given explicitly
\par
\par }\pard\plain \s15\li720\nowidctlpar\widctlpar\adjustright \f2\fs20\cgrid {1
\par }\pard\plain \sb120\nowidctlpar\widctlpar\adjustright \fs20\cgrid {The following is invalid because integer types do not have language associated with them.
\par
\par }\pard\plain \s15\li720\nowidctlpar\widctlpar\adjustright \f2\fs20\cgrid {1
\par {\*\bkmkstart _Toc411586095}{\listtext\pard\plain\s2 \b\i\f1\cgrid \hich\af1\dbch\af0\loch\f1 3.2\tab}}\pard\plain \s2\fi-576\li576\sb240\sa60\keepn\nowidctlpar\widctlpar\jclisttab\tx576\ls2\ilvl1\outlinelevel1\adjustright \b\i\f1\cgrid {
Simple types mapping{\*\bkmkend _Toc411586095}
\par }\pard\plain \sb120\nowidctlpar\widctlpar\adjustright \fs20\cgrid {The following types are represented as strings: -
\par {\pntext\pard\plain\f3\fs20\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \fi-360\li360\sb120\nowidctlpar\widctlpar\tx360{\*\pn \pnlvlblt\ilvl0\ls1\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls1\adjustright {Name (and namewithlang)
\par {\pntext\pard\plain\f3\fs20\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \fi-360\li360\sb120\nowidctlpar\widctlpar\tx360{\*\pn \pnlvlblt\ilvl0\ls1\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls1\adjustright {Text (and textwithlang)
\par {\pntext\pard\plain\f3\fs20\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \fi-360\li360\sb120\nowidctlpar\widctlpar\tx360{\*\pn \pnlvlblt\ilvl0\ls1\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls1\adjustright {Keyword
\par {\pntext\pard\plain\f3\fs20\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \fi-360\li360\sb120\nowidctlpar\widctlpar\tx360{\*\pn \pnlvlblt\ilvl0\ls1\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls1\adjustright {Uri and urischeme
\par {\pntext\pard\plain\f3\fs20\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \fi-360\li360\sb120\nowidctlpar\widctlpar\tx360{\*\pn \pnlvlblt\ilvl0\ls1\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls1\adjustright {Charset
\par {\pntext\pard\plain\f3\fs20\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \fi-360\li360\sb120\nowidctlpar\widctlpar\tx360{\*\pn \pnlvlblt\ilvl0\ls1\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls1\adjustright {Natural language
\par {\pntext\pard\plain\f3\fs20\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \fi-360\li360\sb120\nowidctlpar\widctlpar\tx360{\*\pn \pnlvlblt\ilvl0\ls1\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls1\adjustright {MIME media type
\par }\pard \sb120\nowidctlpar\widctlpar{\*\pn \pnlvlcont\ilvl0\ls0\pnrnot0\pndec }\adjustright {The following types are represented as integer numeric strings
\par {\pntext\pard\plain\f3\fs20\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \fi-360\li360\sb120\nowidctlpar\widctlpar\tx360{\*\pn \pnlvlblt\ilvl0\ls1\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls1\adjustright {Integer
\par {\pntext\pard\plain\f3\fs20\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \fi-360\li360\sb120\nowidctlpar\widctlpar\tx360{\*\pn \pnlvlblt\ilvl0\ls1\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls1\adjustright {Enum
\par {\pntext\pard\plain\f3\fs20\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \fi-360\li360\sb120\nowidctlpar\widctlpar\tx360{\*\pn \pnlvlblt\ilvl0\ls1\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls1\adjustright {Boolean (1= true, 0=false)
\par }\pard\plain \s16\sb120\nowidctlpar\widctlpar\tx360\adjustright \fs20\cgrid {An integer numeric string is a sequence of ASCII characters representing the digits 0 thru 9, \lquote +\rquote and \lquote -\lquote . Leading and trailing spaces may not b
e present. Leading zeroes are permitted and are ignored. The \lquote +\rquote or \lquote -\lquote
character may only appear in the first character position, if omitted then the values is treated as positive. No signed attributes are currently defined in the model and hence a leading \lquote -\lquote would be invalid.
\par }\pard\plain \sb120\nowidctlpar\widctlpar\adjustright \fs20\cgrid {Datetime is represented as a the \lquote hinted\rquote string as defined in RFC1903 i.e \ldblquote 1992-5-26,13:30:15.0,-4:0\rdblquote
\par Octet-string is represented as base64.
\par {\*\bkmkstart _Toc411586096}{\listtext\pard\plain\s1 \b\f1\fs28\kerning28\cgrid \hich\af1\dbch\af0\loch\f1 4\tab}}\pard\plain \s1\fi-432\li432\sb240\sa60\keepn\nowidctlpar\widctlpar\jclisttab\tx432\ls2\outlinelevel0\adjustright \b\f1\fs28\kerning28\cgrid
{Object Attributes{\*\bkmkend _Toc411586096}
\par }\pard\plain \sb120\nowidctlpar\widctlpar\adjustright \fs20\cgrid {Attributes that are associated with an object are nested within an XML b
lock. An object in this sense is a construct which may be referenced as a whole and where multiple instances of it may occur in a message. The only example of this in the current model is job. Future extensions to IPP may require other objects such as doc
ument, printer, server, font, user, etc.
\par The attributes contained within the block are those defined in [MODEL] as being attributes of that object (e.g. job attributes).
\par A job is represented as follows.
\par
\par }\pard\plain \s15\li720\nowidctlpar\widctlpar\adjustright \f2\fs20\cgrid {
\par }\pard \s15\li1440\nowidctlpar\widctlpar\adjustright {print-job
\par 1.0
\par en
\par
\par }\pard \s15\fi720\li1440\nowidctlpar\widctlpar\adjustright {My print Job
\par 2
\par }\pard \s15\li1440\nowidctlpar\widctlpar\adjustright {
\par }\pard \s15\li720\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \sb120\nowidctlpar\widctlpar\adjustright \fs20\cgrid {If multiple instances of a given object are included in a message then they are simple concatenated into a list. Example: -
\par
\par }\pard\plain \s15\li720\nowidctlpar\widctlpar\adjustright \f2\fs20\cgrid {
\par }\pard \s15\li1440\nowidctlpar\widctlpar\adjustright {get-jobs
\par 1.0
\par 1
\par en
\par
\par }\pard \s15\fi720\li1440\nowidctlpar\widctlpar\adjustright {job1
\par 1234
\par }\pard \s15\li1440\nowidctlpar\widctlpar\adjustright {
\par }\pard \s15\fi720\li720\nowidctlpar\widctlpar\adjustright {
\par }\pard \s15\fi720\li1440\nowidctlpar\widctlpar\adjustright {job 2
\par 2222
\par }\pard \s15\li1440\nowidctlpar\widctlpar\adjustright {
\par }\pard \s15\li720\nowidctlpar\widctlpar\adjustright {
\par {\*\bkmkstart _Toc411586097}{\listtext\pard\plain\s1 \b\f1\fs28\kerning28\cgrid \hich\af1\dbch\af0\loch\f1 5\tab}}\pard\plain \s1\fi-432\li432\sb240\sa60\keepn\nowidctlpar\widctlpar\jclisttab\tx432\ls2\outlinelevel0\adjustright \b\f1\fs28\kerning28\cgrid
{Compound and meta-type mapping{\*\bkmkend _Toc411586097}
\par }\pard\plain \sb120\nowidctlpar\widctlpar\adjustright \fs20\cgrid {Structured types are represented as XML blocks. The outer element is has the name of the attribute as its name. The contained elements have the name of the sub-components of the type.
\par {\*\bkmkstart _Toc411586098}{\listtext\pard\plain\s2 \b\i\f1\cgrid \hich\af1\dbch\af0\loch\f1 5.1\tab}}\pard\plain \s2\fi-576\li576\sb240\sa60\keepn\nowidctlpar\widctlpar\jclisttab\tx576\ls2\ilvl1\outlinelevel1\adjustright \b\i\f1\cgrid {Resolution
{\*\bkmkend _Toc411586098}
\par }\pard\plain \s15\li720\nowidctlpar\widctlpar\adjustright \f2\fs20\cgrid {
\par }\pard \s15\fi720\li720\nowidctlpar\widctlpar\adjustright {600
\par 600
\par }\pard \s15\li720\nowidctlpar\widctlpar\adjustright {
\par {\*\bkmkstart _Toc411586099}{\listtext\pard\plain\s2 \b\i\f1\cgrid \hich\af1\dbch\af0\loch\f1 5.2\tab}}\pard\plain \s2\fi-576\li576\sb240\sa60\keepn\nowidctlpar\widctlpar\jclisttab\tx576\ls2\ilvl1\outlinelevel1\adjustright \b\i\f1\cgrid {Range of Integer
{\*\bkmkend _Toc411586099}
\par }\pard\plain \s15\li720\nowidctlpar\widctlpar\adjustright \f2\fs20\cgrid {
\par }\pard \s15\fi720\li720\nowidctlpar\widctlpar\adjustright {0
\par 20
\par }\pard \s15\li720\nowidctlpar\widctlpar\adjustright {
\par {\*\bkmkstart _Toc411586100}{\listtext\pard\plain\s2 \b\i\f1\cgrid \hich\af1\dbch\af0\loch\f1 5.3\tab}}\pard\plain \s2\fi-576\li576\sb240\sa60\keepn\nowidctlpar\widctlpar\jclisttab\tx576\ls2\ilvl1\outlinelevel1\adjustright \b\i\f1\cgrid {1Setof
{\*\bkmkend _Toc411586100}
\par }\pard\plain \sb120\nowidctlpar\widctlpar\adjustright \fs20\cgrid {A set of values is represented as an XML block. The outer block name is the attribute name, the member values are each contained within an element call \lquote member\rquote
. The attribute value itself is expressed identically to any other attribute. In particular the same qualifying XML attributes may be used.
\par
\par }\pard\plain \s15\li720\nowidctlpar\widctlpar\adjustright \f2\fs20\cgrid {
\par }\pard \s15\fi720\li720\nowidctlpar\widctlpar\adjustright {job-name
\par job-id
\par }\pard \s15\li720\nowidctlpar\widctlpar\adjustright {
\par {\*\bkmkstart _Toc411586101}{\listtext\pard\plain\s2 \b\i\f1\cgrid \hich\af1\dbch\af0\loch\f1 5.4\tab}}\pard\plain \s2\fi-576\li576\sb240\sa60\keepn\nowidctlpar\widctlpar\jclisttab\tx576\ls2\ilvl1\outlinelevel1\adjustright \b\i\f1\cgrid {Attribute groups
{\*\bkmkend _Toc411586101}
\par }\pard\plain \sb120\nowidctlpar\widctlpar\adjustright \fs20\cgrid {The main example of this is \lquote unsupported-attributes\rquote . These are represented as a concatenated list of the values that were in error: -
\par
\par }\pard\plain \s15\li720\nowidctlpar\widctlpar\adjustright \f2\fs20\cgrid {
\par \tab 300
\par \tab \'85.
\par
\par }\pard\plain \sb120\nowidctlpar\widctlpar\adjustright \fs20\cgrid {An alternative, more consistent way of representing them would be to treat these as a response attribute of type 1setof of attributes. For example:-
\par
\par }\pard\plain \s15\li720\nowidctlpar\widctlpar\adjustright \f2\fs20\cgrid {
\par \tab
\par }\pard \s15\fi720\li720\nowidctlpar\widctlpar\adjustright {\tab 300
\par }\pard \s15\li720\nowidctlpar\widctlpar\adjustright {\tab
\par \tab \'85.
\par
\par }\pard\plain \sb120\nowidctlpar\widctlpar\adjustright \fs20\cgrid {This is not adopted here because it would be model change.
\par {\*\bkmkstart _Toc411586103}{\listtext\pard\plain\s1 \b\f1\fs28\kerning28\cgrid \hich\af1\dbch\af0\loch\f1 6\tab}}\pard\plain \s1\fi-432\li432\sb240\sa60\keepn\nowidctlpar\widctlpar\jclisttab\tx432\ls2\outlinelevel0\adjustright \b\f1\fs28\kerning28\cgrid
{Examples{\*\bkmkend _Toc411586103}
\par {\*\bkmkstart _Toc411586104}{\listtext\pard\plain\s2 \b\i\f1\cgrid \hich\af1\dbch\af0\loch\f1 6.1\tab}}\pard\plain \s2\fi-576\li576\sb240\sa60\keepn\nowidctlpar\widctlpar\jclisttab\tx576\ls2\ilvl1\outlinelevel1\adjustright \b\i\f1\cgrid {Print-job
{\*\bkmkend _Toc411586104}
\par }\pard\plain \sb120\nowidctlpar\widctlpar\adjustright \fs20\cgrid {Request, including copies, duplex and name.
\par
\par }\pard\plain \s15\li720\nowidctlpar\widctlpar\adjustright \f2\fs20\cgrid {Content-type:multipart/mixed, Boundary=\rdblquote A string That does not occur elsewhere\rdblquote
\par --A string That does not occur elsewhere
\par Content-Type: text/xml
\par
\par
\par }\pard \s15\li1440\nowidctlpar\widctlpar\adjustright {print-job
\par 1.0
\par 1
\par en
\par
\par }\pard \s15\li2160\nowidctlpar\widctlpar\adjustright {My print Job
\par 2
\par two-sided-long-edge
\par }\pard \s15\li1440\nowidctlpar\widctlpar\adjustright {
\par }\pard \s15\li720\nowidctlpar\widctlpar\adjustright {
\par A string That does not occur elsewhere
\par Content-Type: Application/octet-string
\par [PDL]
\par --A string That does not occur elsewhere\emdash
\par {\*\bkmkstart _Toc411586105}{\listtext\pard\plain\s2 \b\i\f1\cgrid \hich\af1\dbch\af0\loch\f1 6.2\tab}}\pard\plain \s2\fi-576\li576\sb240\sa60\keepn\nowidctlpar\widctlpar\jclisttab\tx576\ls2\ilvl1\outlinelevel1\adjustright \b\i\f1\cgrid {
Print-job Response (OK){\*\bkmkend _Toc411586105}
\par }\pard\plain \sb120\nowidctlpar\widctlpar\adjustright \fs20\cgrid {
\par }\pard\plain \s15\li720\nowidctlpar\widctlpar\adjustright \f2\fs20\cgrid {Content-Type: text/xml
\par
\par
\par }\pard \s15\li1440\nowidctlpar\widctlpar\adjustright {print-job
\par 1.0
\par 1
\par en
\par OK
\par OK
\par
\par }\pard \s15\li2160\nowidctlpar\widctlpar\adjustright {123
\par http://foo/bar/123
\par pending
\par }\pard \s15\li1440\nowidctlpar\widctlpar\adjustright {
\par }\pard \s15\li720\nowidctlpar\widctlpar\adjustright {
\par {\*\bkmkstart _Toc411586106}{\listtext\pard\plain\s2 \b\i\f1\cgrid \hich\af1\dbch\af0\loch\f1 6.3\tab}}\pard\plain \s2\fi-576\li576\sb240\sa60\keepn\nowidctlpar\widctlpar\jclisttab\tx576\ls2\ilvl1\outlinelevel1\adjustright \b\i\f1\cgrid {
Print-job Response (Failed){\*\bkmkend _Toc411586106}
\par }\pard\plain \sb120\nowidctlpar\widctlpar\adjustright \fs20\cgrid {
\par }\pard\plain \s15\li720\nowidctlpar\widctlpar\adjustright \f2\fs20\cgrid {Content-Type: text/xml
\par
\par
\par }\pard \s15\li1440\nowidctlpar\widctlpar\adjustright {print-job
\par 1.0
\par 1
\par en
\par Client-error-bad-request
\par Dommage, mauvais requet
\par
\par \tab
\par \tab 20
\par
\par }\pard \s15\li720\nowidctlpar\widctlpar\adjustright {
\par {\*\bkmkstart _Toc411586107}{\listtext\pard\plain\s2 \b\i\f1\cgrid \hich\af1\dbch\af0\loch\f1 6.4\tab}}\pard\plain \s2\fi-576\li576\sb240\sa60\keepn\nowidctlpar\widctlpar\jclisttab\tx576\ls2\ilvl1\outlinelevel1\adjustright \b\i\f1\cgrid {Print-URI request
{\*\bkmkend _Toc411586107}
\par }\pard\plain \sb120\nowidctlpar\widctlpar\adjustright \fs20\cgrid {Show not using multi-part MIME.
\par }\pard\plain \s15\li720\nowidctlpar\widctlpar\adjustright \f2\fs20\cgrid {
\par Content-Type: text/xml
\par
\par
\par }\pard \s15\li1440\nowidctlpar\widctlpar\adjustright {print-URI
\par 1.0
\par 1
\par en
\par
\par }\pard \s15\li2160\nowidctlpar\widctlpar\adjustright {My print Job
\par 2
\par two-sided-long-edge
\par ftp://foo.com/foo
\par }\pard \s15\li1440\nowidctlpar\widctlpar\adjustright {
\par }\pard \s15\li720\nowidctlpar\widctlpar\adjustright {
\par {\*\bkmkstart _Toc411586108}{\listtext\pard\plain\s2 \b\i\f1\cgrid \hich\af1\dbch\af0\loch\f1 6.5\tab}}\pard\plain \s2\fi-576\li576\sb240\sa60\keepn\nowidctlpar\widctlpar\jclisttab\tx576\ls2\ilvl1\outlinelevel1\adjustright \b\i\f1\cgrid {
Create-Job request{\*\bkmkend _Toc411586108}
\par }\pard\plain \sb120\nowidctlpar\widctlpar\adjustright \fs20\cgrid {No job object appears because no job attributes are given. [Alternatively an empty job object could be supplied]
\par
\par }\pard\plain \s15\li720\nowidctlpar\widctlpar\adjustright \f2\fs20\cgrid {Content-Type: text/xml
\par
\par
\par }\pard \s15\li1440\nowidctlpar\widctlpar\adjustright {create-job
\par en
\par 1.0
\par 1
\par }\pard \s15\li720\nowidctlpar\widctlpar\adjustright {
\par {\*\bkmkstart _Toc411586109}{\listtext\pard\plain\s2 \b\i\f1\cgrid \hich\af1\dbch\af0\loch\f1 6.6\tab}}\pard\plain \s2\fi-576\li576\sb240\sa60\keepn\nowidctlpar\widctlpar\jclisttab\tx576\ls2\ilvl1\outlinelevel1\adjustright \b\i\f1\cgrid {
Get-Jobs request & response{\*\bkmkend _Toc411586109}
\par }\pard\plain \sb120\nowidctlpar\widctlpar\adjustright \fs20\cgrid {Request, limit to 50 but no filtering. Return job-id, job-name and document-format.
\par
\par }\pard\plain \s15\li720\nowidctlpar\widctlpar\adjustright \f2\fs20\cgrid {Content-Type: text/xml
\par
\par
\par }\pard \s15\li1440\nowidctlpar\widctlpar\adjustright {get-jobs
\par 1.0
\par 1
\par en
\par 50
\par
\par \tab job-id
\par \tab job-name>
\par \tab document-format
\par
\par }\pard \s15\li720\nowidctlpar\widctlpar\adjustright {
\par
\par {\listtext\pard\plain\s2 \b\i\f1\cgrid \hich\af1\dbch\af0\loch\f1 6.7\tab}}\pard\plain \s2\fi-576\li576\sb240\sa60\keepn\nowidctlpar\widctlpar\jclisttab\tx576\ls2\ilvl1\outlinelevel1\adjustright \b\i\f1\cgrid {Response, 2 jobs returned.
\par }\pard\plain \sb120\nowidctlpar\widctlpar\adjustright \fs20\cgrid {
\par }\pard\plain \s15\li720\nowidctlpar\widctlpar\adjustright \f2\fs20\cgrid {Content-Type: text/xml
\par
\par
\par }\pard \s15\li1440\nowidctlpar\widctlpar\adjustright {get-jobs
\par 1.0
\par 1
\par
\par \tab 147
\par \tab fou
\par \tab application/postscript
\par
\par
\par \tab 148
\par \tab isch guet
\par \tab text/plain
\par
\par }\pard \s15\li720\nowidctlpar\widctlpar\adjustright {
\par {\*\bkmkstart _Toc411586110}{\*\bkmkstart _Toc411586102}{\listtext\pard\plain\s1 \b\f1\fs28\kerning28\cgrid \hich\af1\dbch\af0\loch\f1 7\tab}}\pard\plain \s1\fi-432\li432\sb240\sa60\keepn\nowidctlpar\widctlpar
\jclisttab\tx432\ls2\outlinelevel0\adjustright \b\f1\fs28\kerning28\cgrid {Use of DTD{\*\bkmkend _Toc411586102}
\par }\pard\plain \sb120\nowidctlpar\widctlpar\adjustright \fs20\cgrid {No DTD is required to validate the protocol on the receiver\rquote s side.
\par Rationale: This would constrain the protocol from being further extended. Plus it does not really add
anything; the receiver must validate the request, it is merely a matter of which piece of code on the receiver does the validation. In addition, a DTD based validation, being generic, would be more expensive to implement, this is a significant considerat
ion for people embedding IPP in printers.
\par Note that a given implementation MAY choose to use a DTD based validation method (using a private DTD that expresses the exact protocol supported by a given receiver) but this is a private issue; the point is that t
here will be no standardized DTD or set of DTDs issued.
\par {\listtext\pard\plain\s1 \b\f1\fs28\kerning28\cgrid \hich\af1\dbch\af0\loch\f1 8\tab}}\pard\plain \s1\fi-432\li432\sb240\sa60\keepn\nowidctlpar\widctlpar\jclisttab\tx432\ls2\outlinelevel0\adjustright \b\f1\fs28\kerning28\cgrid {A full OO representation
{\*\bkmkend _Toc411586110}
\par }\pard\plain \sb120\nowidctlpar\widctlpar\adjustright \fs20\cgrid {It is worthwhile looking at how the XML representation of data could be used for a more explicit object oriented approach. The following issues need to be addressed:
\par {\pntext\pard\plain\f3\fs20\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \fi-360\li360\sb120\nowidctlpar\widctlpar\tx360{\*\pn \pnlvlblt\ilvl0\ls1\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls1\adjustright {A rationa
lization of attribute naming
\par {\pntext\pard\plain\f3\fs20\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \fi-360\li360\sb120\nowidctlpar\widctlpar\tx360{\*\pn \pnlvlblt\ilvl0\ls1\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls1\adjustright {
The explicit inclusion of objects that lurk in the background of the IPP model (document, printer, etc.)
\par {\pntext\pard\plain\f3\fs20\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \fi-360\li360\sb120\nowidctlpar\widctlpar\tx360{\*\pn \pnlvlblt\ilvl0\ls1\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls1\adjustright {
The specification of every attribute as belonging to an object \endash i.e. there sre no \lquote floating\rquote attributes that don\rquote t belong to an object.
\par {\pntext\pard\plain\f3\fs20\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \fi-360\li360\sb120\nowidctlpar\widctlpar\tx360{\*\pn \pnlvlblt\ilvl0\ls1\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls1\adjustright {The nesting of objects
\par }\pard \sb120\nowidctlpar\widctlpar\adjustright {
The attribute name space in [MODEL] is flat. There is an attempt to add some structure by qualifying many names with the object to which they apply, document-format, job-name, etc. However this is not consistently used
, for example number-of-documents is a job attribute.
\par A more OO approach would be to explicitly assign an object name to each construct in the model and explicitly qualify the name using that object. We would then have Request.charset, Job.name, Document.format, etc.
\par The second step is then to explicitly state a containment hierarchy. For example a request may contain one or more jobs, a job may contain one or more documents, etc.
\par Finally one would specifically indicate that certain attributes have objects as their value, for example the document attribute of a job is a document object (or alternatively the Documents attribute is 1setof of document objects).
\par An abbreviated print-URI example: -
\par
\par }\pard\plain \s15\li720\nowidctlpar\widctlpar\adjustright \f2\fs20\cgrid {
\par \tab print-URI
\par \tab en
\par }\pard \s15\fi720\li720\nowidctlpar\widctlpar\adjustright {
\par }\pard \s15\li720\nowidctlpar\widctlpar\adjustright {\tab \tab 1
\par \tab \tab my job
\par \tab \tab
\par \tab \tab \tab ftp://foo.bar/foo
\par \tab \tab \tab postscript
\par \tab \tab
\par \tab
\par
\par
\par }\pard\plain \sb120\nowidctlpar\widctlpar\adjustright \fs20\cgrid {Or possibly: -
\par
\par }\pard\plain \s15\li720\nowidctlpar\widctlpar\adjustright \f2\fs20\cgrid {
\par \tab print-URI
\par \tab
\par \tab \tab 1
\par \tab \tab my job
\par \tab \tab
\par \tab \tab \tab
\par \tab \tab \tab \tab
\par }\pard \s15\fi720\li1440\nowidctlpar\widctlpar\adjustright {\tab \tab \tab ftp://foo.bar/foo
\par }\pard \s15\li720\nowidctlpar\widctlpar\adjustright {\tab \tab \tab \tab \tab postscript
\par \tab \tab \tab \tab
\par }\pard \s15\nowidctlpar\widctlpar\adjustright {\tab \tab \tab \tab
\par }\pard \s15\li720\nowidctlpar\widctlpar\adjustright {\tab \tab
\par \tab
\par
\par
\par }\pard\plain \sb120\nowidctlpar\widctlpar\adjustright \fs20\cgrid {An interesting question would be whether or not one would require a name for
each object instance (for example request-ID is required but not job or document. This would be useful in the situation where there are multiple instances of an object in a message. For example if there were >1 document in a job then how could the server
indicate which document it is refering to in a message. If each obejct instance had an ID then no ambinguity would exist. For example a document might be 123.1.1 (request.ID, Job.ID, Document.ID), the URI attribute would be 123.1.1.URI.
\par }}