<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"MS Gothic";
        panose-1:2 11 6 9 7 2 5 8 2 4;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"\@MS Gothic";
        panose-1:2 11 6 9 7 2 5 8 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
span.EmailStyle17
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
span.EmailStyle18
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:459417320;
        mso-list-type:hybrid;
        mso-list-template-ids:1995996028 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l0:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l0:level5
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l0:level8
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l1
        {mso-list-id:1546944077;
        mso-list-type:hybrid;
        mso-list-template-ids:-907273518 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l1:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l1:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l1:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l1:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l1:level5
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l1:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l1:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l1:level8
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l1:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Because it’s the current thread on this topic, here is something I put together for the Kyoto meeting that we discussed in the room but apparently never went
 out to the list.  We also discussed this on the 21 August conference call and my notes say we agreed not to change the field name but might consider changing the term for the concept used in Part 2.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Part 2 uses:<o:p></o:p></span></p>
<p class="MsoListParagraph" style="text-indent:-.25in;mso-list:l0 level1 lfo1"><![if !supportLists]><span style="font-size:11.0pt;font-family:Symbol;color:#1F497D"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman"">        
</span></span></span><![endif]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">“content type” – not defined in RFC 2616<o:p></o:p></span></p>
<p class="MsoListParagraph" style="text-indent:-.25in;mso-list:l0 level1 lfo1"><![if !supportLists]><span style="font-size:11.0pt;font-family:Symbol;color:#1F497D"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman"">        
</span></span></span><![endif]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">“content-type” – not defined in RFC 2616<o:p></o:p></span></p>
<p class="MsoListParagraph" style="text-indent:-.25in;mso-list:l0 level1 lfo1"><![if !supportLists]><span style="font-size:11.0pt;font-family:Symbol;color:#1F497D"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman"">        
</span></span></span><![endif]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">“media type” – defined in RFC 2616<o:p></o:p></span></p>
<p class="MsoListParagraph" style="text-indent:-.25in;mso-list:l0 level1 lfo1"><![if !supportLists]><span style="font-size:11.0pt;font-family:Symbol;color:#1F497D"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman"">        
</span></span></span><![endif]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">“Content Types” stream – not defined in RFC 2616<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Part 2 does NOT use:<o:p></o:p></span></p>
<p class="MsoListParagraph" style="text-indent:-.25in;mso-list:l1 level1 lfo2"><![if !supportLists]><span style="font-size:11.0pt;font-family:Symbol;color:#1F497D"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman"">        
</span></span></span><![endif]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">“Content-Type” – defined in the RFC<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">The main issue appears to be defining “content type” as what the RFC calls a media type.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Potentially confusing/problematic are:<o:p></o:p></span></p>
<p class="MsoListParagraph" style="text-indent:-.25in;mso-list:l1 level1 lfo2"><![if !supportLists]><span style="font-size:11.0pt;font-family:Symbol;color:#1F497D"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman"">        
</span></span></span><![endif]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Using the term “media type” for “type” (an element in the RFC’s definition of media type)<o:p></o:p></span></p>
<p class="MsoListParagraph" style="text-indent:-.25in;mso-list:l1 level1 lfo2"><![if !supportLists]><span style="font-size:11.0pt;font-family:Symbol;color:#1F497D"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman"">        
</span></span></span><![endif]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">OPC’s Content Types stream vs. the RFC’s Content-Type.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> eb2mmrt@gmail.com [mailto:eb2mmrt@gmail.com]
<b>On Behalf Of </b>MURATA Makoto<br>
<b>Sent:</b> Sunday, November 2, 2014 5:33 AM<br>
<b>To:</b> SC 34 WG4<br>
<b>Subject:</b> Re: Which RFC(s) for media type should we refer to?<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">Folks,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">The regular expression in opc-contentTypes.xsd has another interesting<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">subexpression:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">(&quot;(([\p{IsLatin-1Supplement}\p{IsBasicLatin}-[\p{Cc}&#127;&quot;\n\r]]|(\s+))|(\\[\p{IsBasicLatin}]))*&quot;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">This subexpression matches a doubly-quoted string.  But what character<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">is allowed as a part of this doubly-quoted string?<span style="font-family:"Calibri",sans-serif"> </span>Is this <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">subexpression consistent with RFC 7230?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">First, unlike the first regular expression, <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">neither \(\)&lt;&gt;@,;:\\ nor /\[\]\?=\{\}\s\t are excluded.  <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">This is because RFCs 2045 and 7230 allow tspecials as part of <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">doubly-quoted strings.  This is nice.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Second, escaped characters such as \a are always allows by<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">(\\[\p{IsBasicLatin}]) as long as escaped characters are from #x0000<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">to #x007F.  RFC 7230 allows more characters (#x0080 to #x007F) to be<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">escaped, but does not allow invisible characters such as the space<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">character to be escaped.  Thus, there is a discrepancy here.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Third, \p{IsLatin-1Supplement} represents characters <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">from #x0080 to #x00FF.  See <a href="http://www.w3.org/TR/xmlschema-2/#nt-charClassEsc">
http://www.w3.org/TR/xmlschema-2/#nt-charClassEsc</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">This matches obs-text in RFC 7230.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Fourth, RFC 7230 (to be precise, qdtext) does not allow REVERSE<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">SOLIDUS, but the subexpression does.  Thus, we have another <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">discrepancy.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">     qdtext         = HTAB / SP /%x21 / %x23-5B / %x5D-7E / obs-text<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Regards,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Makoto<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">2014-11-02 16:56 GMT+09:00 MURATA Makoto <<a href="mailto:eb2m-mrt@asahi-net.or.jp" target="_blank">eb2m-mrt@asahi-net.or.jp</a>>:<o:p></o:p></p>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<p class="MsoNormal">Oops, I forgot to point out that <span style="font-size:10.5pt;font-family:"Arial",sans-serif;color:#500050">\{ and \} are disallowed by </span><o:p></o:p></p>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif;color:#500050">our regular expression, but they are not tspecials as </span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif;color:#500050">specified in RFC </span><span style="font-size:10.5pt;font-family:"Arial",sans-serif">2045.   RFC 7230 does </span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">not allow these two characters, and exactly catches </span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">the enumerated list in my previous mail.</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif"><a href="https://tools.ietf.org/html/rfc7230#section-3.2.6" target="_blank">https://tools.ietf.org/html/rfc7230#section-3.2.6</a></span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">One could say that our regular expression is already </span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">aligned with RFC 7230 rather than RFC 2045.</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">Regards,</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">Makoto</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">2014-11-02 16:15 GMT+09:00 MURATA Makoto <<a href="mailto:eb2m-mrt@asahi-net.or.jp" target="_blank">eb2m-mrt@asahi-net.or.jp</a>>:<o:p></o:p></p>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<p class="MsoNormal">Folks,<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I pointed out that<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">   <span style="font-size:10.5pt;font-family:"Arial",sans-serif">[\p{IsBasicLatin}-[\p{Cc}&#127;\(\)&lt;&gt;@,;:\\&quot;/\[\]\?=\{\}\s\t]] </span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">is used repeatedly.  This appears to represent characters in </span><o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">      token := 1*<any (US-ASCII) CHAR except SPACE, CTLs,<br>
                 or tspecials><br>
</span><br>
where<o:p></o:p></p>
</div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif"><br>
<br>
     tspecials :=  "(" / ")" / "<" / ">" / "@" /<br>
                   "," / ";" / ":" / "\" / <"><br>
                   "/" / "[" / "]" / "?" / "="<br>
                   ; Must be in quoted-string,</span><o:p></o:p></p>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">                   ; to use within parameter values" /</span><o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">They both represent any of the following characters:</span><o:p></o:p></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">- 0021;EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;</span><span style="font-family:"Arial",sans-serif"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">- 0023;NUMBER SIGN;Po;0;ET;;;;;N;;;;;</span><span style="font-family:"Arial",sans-serif"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">- 0024;DOLLAR SIGN;Sc;0;ET;;;;;N;;;;;</span><span style="font-family:"Arial",sans-serif"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">- 0025;PERCENT SIGN;Po;0;ET;;;;;N;;;;;</span><span style="font-family:"Arial",sans-serif"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">- 0026;AMPERSAND;Po;0;ON;;;;;N;;;;;</span><span style="font-family:"Arial",sans-serif"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">- 0027;APOSTROPHE;Po;0;ON;;;;;N;APOSTROPHE-QUOTE;;;;</span><span style="font-family:"Arial",sans-serif"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">- 002A;ASTERISK;Po;0;ON;;;;;N;;;;;</span><span style="font-family:"Arial",sans-serif"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">- 002B;PLUS SIGN;Sm;0;ES;;;;;N;;;;;</span><span style="font-family:"Arial",sans-serif"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">- 002D;HYPHEN-MINUS;Pd;0;ES;;;;;N;;;;;</span><span style="font-family:"Arial",sans-serif"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">- 002E;FULL STOP;Po;0;CS;;;;;N;PERIOD;;;;</span><span style="font-family:"Arial",sans-serif"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">- 0-9</span><span style="font-family:"Arial",sans-serif"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">- A-Z</span><span style="font-family:"Arial",sans-serif"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">- 005E;CIRCUMFLEX ACCENT;Sk;0;ON;;;;;N;SPACING CIRCUMFLEX;;;;</span><span style="font-family:"Arial",sans-serif"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">- 005F;LOW LINE;Pc;0;ON;;;;;N;SPACING UNDERSCORE;;;;</span><span style="font-family:"Arial",sans-serif"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">- 0060;GRAVE ACCENT;Sk;0;ON;;;;;N;SPACING GRAVE;;;;</span><span style="font-family:"Arial",sans-serif"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">- a-z</span><span style="font-family:"Arial",sans-serif"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">- 007C;VERTICAL LINE;Sm;0;ON;;;;;N;VERTICAL BAR;;;;</span><span style="font-family:"Arial",sans-serif"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">- 007E;TILDE;Sm;0;ON;;;;;N;;;;;</span><span style="font-family:"Arial",sans-serif"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif"><o:p> </o:p></span></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">The regular expression allow any of these characters as <o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">part of a top-level media type name, second-level <o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">media type name, and parameter name,<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">Regards,<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">Makoto<o:p></o:p></span></p>
</div>
</div>
</div>
</div>
</div>
<div>
<div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">2014-10-25 22:08 GMT+09:00 MURATA Makoto <<a href="mailto:eb2m-mrt@asahi-net.or.jp" target="_blank">eb2m-mrt@asahi-net.or.jp</a>>:<o:p></o:p></p>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<p class="MsoNormal">Caroline,<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Thank you for your through study!  This is an <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">eye opener.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Both RFC 2616 and RFC 7321 allow the use of doubly-quoted <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">strings and <span style="color:black">single-octet quoting by \.</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">OPC uses content types as part of </span>[Content_Types].xml  <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">The XSD schema for this document is opc-contentTypes.xsd.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">It has an ugly regular expression <o:p></o:p></p>
</div>
<div>
<table class="MsoNormalTable" border="0" cellpadding="0">
<tbody>
<tr>
<td style="padding:.75pt .75pt .75pt .75pt"></td>
<td style="padding:.75pt .75pt .75pt .75pt"></td>
</tr>
</tbody>
</table>
<div>
<p class="MsoNormal">"(((([\p{IsBasicLatin}-[\p{Cc}&#127;\(\)&lt;&gt;@,;:\\&quot;/\[\]\?=\{\}\s\t]])+))/((([\p{IsBasicLatin}-[\p{Cc}&#127;\(\)&lt;&gt;@,;:\\&quot;/\[\]\?=\{\}\s\t]])+))((\s+)*;(\s+)*(((([\p{IsBasicLatin}-[\p{Cc}&#127;\(\)&lt;&gt;@,;:\\&quot;/\[\]\?=\{\}\s\t]])+))=((([\p{IsBasicLatin}-[\p{Cc}&#127;\(\)&lt;&gt;@,;:\\&quot;/\[\]\?=\{\}\s\t]])+)|(&quot;(([\p{IsLatin-1Supplement}\p{IsBasicLatin}-[\p{Cc}&#127;&quot;\n\r]]|(\s+))|(\\[\p{IsBasicLatin}]))*&quot;))))*)"<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">It is not at all clear whether this is equivalent to RFC 2616, <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">especially because XML has its own mechanism for character <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">escaping (&#x) and also because double quotation marks <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">cannot be used within doubly-quoted attribute values.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I tried to reformulate the above regular expression.  First, <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">[\p{IsBasicLatin}-[\p{Cc}&#127;\(\)&lt;&gt;@,;:\\&quot;/\[\]\?=\{\}\s\t]]<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">appears repeatedly.  If we represent this string by an internal <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">text entity X by introducing <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><!ENTITY X "[\p{IsBasicLatin}-[\p{Cc}&#127;\(\)&lt;&gt;@,;:\\&quot;/\[\]\?=\{\}\s\t]]"><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">the entire expression will become<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">"(((($X)+))/((($X)+))((\s+)*;(\s+)*(((($X)+))=((($X)+)|(&quot;(([\p{IsLatin-1Supplement}\p{IsBasicLatin}-[\p{Cc}&#127;&quot;\n\r]]|(\s+))|(\\[\p{IsBasicLatin}]))*&quot;))))*)"<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">By removing unnecessary parentheses, this can be rewritten as<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">"$X+/$X+(\s*;\s* ($X+=(($X+)|(&quot;(([\p{IsLatin-1Supplement}\p{IsBasicLatin}-[\p{Cc}&#127;&quot;\n\r]]|(\s+))|(\\[\p{IsBasicLatin}]))*&quot;))))*"<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">This looks similar to what RFC 2616 defines.  But <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">are they equivalent?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Regards,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Makoto<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">2014-10-21 6:04 GMT+09:00 Arms, Caroline <<a href="mailto:caar@loc.gov" target="_blank">caar@loc.gov</a>>:<o:p></o:p></p>
<div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<p class="MsoNormal">All,<br>
<br>
I started back on the Content type vs. Media type issue and ran into the question of which RFC(s) we should refer to, thinking that would be a good place to start thinking about rewording things.  It's not so simple!<br>
<br>
Part 2 currently refers to RFC 2616, which may not have been the most appropriate RFC but that is now moot, because 2616 is obsolete and has been replaced by a group of RFCs including RFC 7231 which refers to RFC 2046 in its Media Type subclause but does not
 elaborate on what media-type actually is.  RFC 7231 provides ABNF for media-type, but you need to refer to RFC 7230 for an explanation of "OWS" -- used in the ABNF.  RFC 2046 lists the top-level media types and common subtypes.  It discusses parameters.  Its
 introduction refers to RFC 2045 for the Content Type context and to RFC 822 for all relevant ABNF not found in its Appendix A: Collected Grammar.  Media-type is not mentioned in Appendix A.  RFC 2045 has a copy of the relevant ABNF from RFC 822.<br>
<br>
More detailed detective work with URLs  is attached below.<br>
<br>
The question will be how best to refer to this in Part 2.   RFC 7231 is most convenient for getting the ABNF syntax, but you need RFC 2046 to understand the semantics.<br>
<br>
   To be continued, no doubt ...<br>
<br>
   Caroline<br>
<br>
Caroline Arms<br>
Library of Congress Contractor<br>
Co-compiler of Sustainability of Digital Formats resource <a href="http://www.digitalpreservation.gov/formats/" target="_blank">
http://www.digitalpreservation.gov/formats/</a><br>
<br>
** Views expressed are personal and not necessarily those of the institution **<br>
<br>
==== DETAILED detective work ====<br>
<br>
Part 2 currently refers to RFC 2616<br>
<br>
<a href="https://www.mnot.net/blog/2014/06/07/rfc2616_is_dead" target="_blank">https://www.mnot.net/blog/2014/06/07/rfc2616_is_dead</a><br>
<br>
<a href="http://www.rfc-editor.org/info/rfc2616" target="_blank">http://www.rfc-editor.org/info/rfc2616</a>  is marked as obsolete<br>
<br>
So I went to one of the replacement RFCs<br>
<br>
<a href="http://tools.ietf.org/html/rfc7231" target="_blank">http://tools.ietf.org/html/rfc7231</a><br>
<br>
3.1.1.1. Media Type<br>
<br>
   HTTP uses Internet media types [RFC2046] in the Content-Type<br>
   (Section 3.1.1.5) and Accept (Section 5.3.2) header fields in order<br>
   to provide open and extensible data typing and type negotiation.<br>
   Media types define both a data format and various processing models:<br>
   how to process that data in accordance with each context in which it<br>
   is received.<br>
<br>
     media-type = type "/" subtype *( OWS ";" OWS parameter )<br>
     type       = token<br>
     subtype    = token<br>
<br>
   The type/subtype MAY be followed by parameters in the form of<br>
   name=value pairs.<br>
<br>
     parameter      = token "=" ( token / quoted-string )<br>
<br>
   The type, subtype, and parameter name tokens are case-insensitive.<br>
   Parameter values might or might not be case-sensitive, depending on<br>
   the semantics of the parameter name.  The presence or absence of a<br>
   parameter might be significant to the processing of a media-type,<br>
   depending on its definition within the media type registry.<br>
<br>
   A parameter value that matches the token production can be<br>
   transmitted either as a token or within a quoted-string.  The quoted<br>
   and unquoted values are equivalent.  For example, the following<br>
   examples are all equivalent, but the first is preferred for<br>
   consistency:<br>
<br>
     text/html;charset=utf-8<br>
     text/html;charset=UTF-8<br>
     Text/HTML;Charset="utf-8"<br>
     text/html; charset="utf-8"<br>
<br>
   Internet media types ought to be registered with IANA according to<br>
   the procedures defined in [BCP13].<br>
<br>
      Note: Unlike some similar constructs in other header fields, media<br>
      type parameters do not allow whitespace (even "bad" whitespace)<br>
      around the "=" character.<br>
<br>
===  aside on OWS  -- optional whitespace ===<br>
<br>
    OWS           = <OWS, see [RFC7230], Section 3.2.3><br>
<br>
<a href="http://tools.ietf.org/html/rfc7230#section-3.2.3" target="_blank">http://tools.ietf.org/html/rfc7230#section-3.2.3</a><br>
<br>
3.2.3. Whitespace<br>
<br>
   This specification uses three rules to denote the use of linear<br>
   whitespace: OWS (optional whitespace), RWS (required whitespace), and<br>
   BWS ("bad" whitespace).<br>
<br>
   The OWS rule is used where zero or more linear whitespace octets<br>
   might appear.  For protocol elements where optional whitespace is<br>
   preferred to improve readability, a sender SHOULD generate the<br>
   optional whitespace as a single SP; otherwise, a sender SHOULD NOT<br>
   generate optional whitespace except as needed to white out invalid or<br>
   unwanted protocol elements during in-place message filtering.<br>
<br>
   The RWS rule is used when at least one linear whitespace octet is<br>
   required to separate field tokens.  A sender SHOULD generate RWS as a<br>
   single SP.<br>
<br>
   The BWS rule is used where the grammar allows optional whitespace<br>
   only for historical reasons.  A sender MUST NOT generate BWS in<br>
   messages.  A recipient MUST parse for such bad whitespace and remove<br>
   it before interpreting the protocol element.<br>
<br>
     OWS            = *( SP / HTAB )<br>
                    ; optional whitespace<br>
     RWS            = 1*( SP / HTAB )<br>
                    ; required whitespace<br>
     BWS            = OWS<br>
                    ; "bad" whitespace<br>
<br>
==== end of OWS digression<br>
<br>
<br>
<a href="http://tools.ietf.org/html/rfc2046" target="_blank">http://tools.ietf.org/html/rfc2046</a><br>
<br>
Multipurpose Internet Mail Extensions (MIME) Part Two:  Media Types<br>
<br>
Introduction<br>
<br>
   The first document in this set, RFC 2045, defines a number of header<br>
   fields, including Content-Type. The Content-Type field is used to<br>
   specify the nature of the data in the body of a MIME entity, by<br>
   giving media type and subtype identifiers, and by providing auxiliary<br>
   information that may be required for certain media types.  After the<br>
   type and subtype names, the remainder of the header field is simply a<br>
   set of parameters, specified in an attribute/value notation.  The<br>
   ordering of parameters is not significant.<br>
<br>
   In general, the top-level media type is used to declare the general<br>
   type of data, while the subtype specifies a specific format for that<br>
   type of data.  Thus, a media type of "image/xyz" is enough to tell a<br>
   user agent that the data is an image, even if the user agent has no<br>
   knowledge of the specific image format "xyz".  Such information can<br>
   be used, for example, to decide whether or not to show a user the raw<br>
   data from an unrecognized subtype -- such an action might be<br>
   reasonable for unrecognized subtypes of "text", but not for<br>
   unrecognized subtypes of "image" or "audio".  For this reason,<br>
   registered subtypes of "text", "image", "audio", and "video" should<br>
   not contain embedded information that is really of a different type.<br>
   Such compound formats should be represented using the "multipart" or<br>
   "application" types.<br>
<br>
   Parameters are modifiers of the media subtype, and as such do not<br>
   fundamentally affect the nature of the content.  The set of<br>
   meaningful parameters depends on the media type and subtype.  Most<br>
   parameters are associated with a single specific subtype.  However, a<br>
   given top-level media type may define parameters which are applicable<br>
   to any subtype of that type.  Parameters may be required by their<br>
   defining media type or subtype or they may be optional.  MIME<br>
   implementations must also ignore any parameters whose names they do<br>
   not recognize.<br>
<br>
RFC 2046 lists the top-level media types and their subtypes.  As shown in the excerpt above, it refers to RFC 2045 for the Content Type header field in the Introduction.<br>
<br>
ABNF for media type is not defined in RFC 2046 but is defined in RFC<br>
2045 which copies it from RFC 822.  RFC 2046 has a Collected Grammar appendix which refers to RFC 822.<br>
<br>
<a href="http://tools.ietf.org/html/rfc2045#page-12" target="_blank">http://tools.ietf.org/html/rfc2045#page-12</a><br>
<br>
5.1. Syntax of the Content-Type Header Field<br>
<br>
   In the Augmented BNF notation of RFC 822, a Content-Type header field<br>
   value is defined as follows:<br>
<br>
     content := "Content-Type" ":" type "/" subtype<br>
                *(";" parameter)<br>
                ; Matching of media type and subtype<br>
                ; is ALWAYS case-insensitive.<br>
<br>
     type := discrete-type / composite-type<br>
<br>
     discrete-type := "text" / "image" / "audio" / "video" /<br>
                      "application" / extension-token<br>
<br>
     composite-type := "message" / "multipart" / extension-token<br>
<br>
     extension-token := ietf-token / x-token<br>
<br>
     ietf-token := <An extension token defined by a<br>
                    standards-track RFC and registered<br>
                    with IANA.><br>
<br>
     x-token := <The two characters "X-" or "x-" followed, with<br>
                 no intervening white space, by any token><br>
<br>
     subtype := extension-token / iana-token<br>
<br>
     iana-token := <A publicly-defined extension token. Tokens<br>
                    of this form must be registered with IANA<br>
                    as specified in RFC 2048.><br>
<br>
     parameter := attribute "=" value<br>
<br>
     attribute := token<br>
                  ; Matching of attributes<br>
                  ; is ALWAYS case-insensitive.<br>
<br>
     value := token / quoted-string<br>
<br>
     token := 1*<any (US-ASCII) CHAR except SPACE, CTLs,<br>
                 or tspecials><br>
<br>
     tspecials :=  "(" / ")" / "<" / ">" / "@" /<br>
                   "," / ";" / ":" / "\" / <"><br>
                   "/" / "[" / "]" / "?" / "="<br>
                   ; Must be in quoted-string,<br>
                   ; to use within parameter values<o:p></o:p></p>
</blockquote>
</div>
</div>
</div>
<p class="MsoNormal"><span style="color:#888888"><br>
<br clear="all">
<o:p></o:p></span></p>
<div>
<p class="MsoNormal"><span style="color:#888888"><o:p> </o:p></span></p>
</div>
<p class="MsoNormal"><span style="color:#888888">-- <br>
<br>
Praying for the victims of the Japan Tohoku earthquake<br>
<br>
Makoto </span><o:p></o:p></p>
</div>
</blockquote>
</div>
<p class="MsoNormal"><br>
<br clear="all">
<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal">-- <o:p></o:p></p>
<div>
<p class="MsoNormal"><br>
Praying for the victims of the Japan Tohoku earthquake<br>
<br>
Makoto<o:p></o:p></p>
</div>
</div>
</div>
</div>
</blockquote>
</div>
<p class="MsoNormal"><br>
<br clear="all">
<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal">-- <o:p></o:p></p>
<div>
<p class="MsoNormal"><br>
Praying for the victims of the Japan Tohoku earthquake<br>
<br>
Makoto<o:p></o:p></p>
</div>
</div>
</div>
</div>
</blockquote>
</div>
<p class="MsoNormal"><br>
<br clear="all">
<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal">-- <o:p></o:p></p>
<div>
<p class="MsoNormal"><br>
Praying for the victims of the Japan Tohoku earthquake<br>
<br>
Makoto<o:p></o:p></p>
</div>
</div>
</div>
</body>
</html>