<html><body bgcolor="#FFFFFF"><div>George appears to be right.</div><div><br></div><div>Makoto<br><br>sent from my iPhone</div><div><br>Begin forwarded message:<br><br></div><blockquote type="cite"><div><b>差出人:</b> George Cristian Bina &lt;<a href="mailto:george@oxygenxml.com">george@oxygenxml.com</a>&gt;<br><b>日時:</b> 2010年12月9日0:05:30 GMT+08:00<br><b>宛先:</b> "MURATA Makoto (FAMILY Given)" &lt;<a href="mailto:eb2m-mrt@asahi-net.or.jp">eb2m-mrt@asahi-net.or.jp</a>&gt;<br><b>件名:</b> <b>OOXML issue: invalid attributes schema referred from the NVDL script</b><br><br></div></blockquote><div></div><blockquote type="cite"><div><span>Dear Makoto,</span><br><span></span><br><span>As I mentioned on Twitter we encountered an issue in one of the NVDL scripts for OOXML.</span><br><span></span><br><span>An Relax NG schema that should be used for validating attribute sections needs to result in an attribute pattern and the NVDL processor automatically wraps this to obtain a valid Relax NG schema that defines the a wrapper element that can contain the attributes defined by the attribute pattern.</span><br><span></span><br><span>In ISO/IEC 29500-3 there is an NVDL script at page 35 that refers to a schema used to validate attribute sections:</span><br><span></span><br><span>namespace mc = "<a href="http://schemas.openxmlformats.org/markup-compatibility/2006">http://schemas.openxmlformats.org/markup-compatibility/2006</a>"</span><br><span>nsList = list { xsd:NCName* }</span><br><span>qnameList =</span><br><span> &nbsp;&nbsp;&nbsp;list {</span><br><span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(xsd:QName</span><br><span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| xsd:string { pattern = "\i\c*:\*" })*</span><br><span> &nbsp;&nbsp;&nbsp;}</span><br><span>start =</span><br><span> &nbsp;&nbsp;&nbsp;element * {</span><br><span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;attribute mc:Ignorable { nsList }?,</span><br><span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;attribute mc:ProcessContent { qnameList }?,</span><br><span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;attribute mc:PreserveElements { qnameList }?,</span><br><span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;attribute mc:PreserveAttributes { qnameList }?,</span><br><span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;attribute mc:MustUnderstand { nsList }?</span><br><span> &nbsp;&nbsp;&nbsp;}</span><br><span></span><br><span>This schema does not work because the NVDL processor expects this to result in a pattern that is wrapped automatically inside an element pattern that defines the wrapper element, see in the NVDL spec</span><br><span></span><br><span>8.7.3 &nbsp; &nbsp;Schema rewriting for attribute sections</span><br><span>...</span><br><span>If g is written in RELAX NG, g is rewritten as &lt;element&gt;&lt;anyName/&gt;g&lt;/element&gt;.</span><br><span>&lt;element&gt;&lt;anyName/&gt;g&lt;/element&gt;</span><br><span>...</span><br><span></span><br><span>Hope this helps!</span><br><span>George</span><br><span>-- </span><br><span>George Cristian Bina</span><br><span>&lt;oXygen/&gt; XML Editor, Schema Editor and XSLT Editor/Debugger</span><br><span><a href="http://www.oxygenxml.com">http://www.oxygenxml.com</a></span><br></div></blockquote></body></html>