title: Command-line XML validator for Windows
body: <p>I've always found validation against a schema to be an invaluable ward against thinkos and would like to incorporate validation checks as part of a project where I frequently need to hand-write XML files a few hundred lines in length.  My text editor has a fairly nice CLI integration feature, so I'm looking for a command-line validator.</p>
  
  <p>When I didn't find any clear winners via Google, I poked around here and found a <a href="https://stackoverflow.com/questions/124865/xml-schema-validation-tool">similar question</a>, but none of the tools suggested there quite fit my needs:</p>
  
  <ul>
  <li><a href="http://xmlsoft.org/xmllint.html" rel="nofollow noreferrer">libxml</a> (via cygwin) — does not report line numbers; I have no idea <em>where</em> my errors are!</li>
  <li><a href="http://msdn.microsoft.com/en-us/library/ms763742%28VS.85%29.aspx" rel="nofollow noreferrer">msxml</a> — cannot be run from the command line?</li>
  <li><a href="http://xerces.apache.org/xerces-c/" rel="nofollow noreferrer">xerces-c</a> — seems to require a copy of Visual C?</li>
  <li><a href="http://xerces.apache.org/xerces2-j/" rel="nofollow noreferrer">xerces2-j</a> — cannot be run from the command line?</li>
  <li><a href="http://xmlstar.sourceforge.net/" rel="nofollow noreferrer">xmlstarlet</a> — insufficient XSD support*</li>
  </ul>
  
  <p>(*The schema I'm validating against uses substitution groups — inappropriately, but it's external to the project, so I can't change it — which causes <code>xmlstarlet</code> to choke even on valid files.)</p>
  
  <p>Normally, this is the point in solving a problem at which I'd give up on looking for an existing solution and reach for the Python-hammer, but Python's XML support is notoriously… well… actually, let's just leave it at "notorious".</p>
  
  <p>So I'm back to looking for a pre-existing tool.  My requirements are pretty simple:</p>
  
  <ul>
  <li>runs on Win32 (Windows XP SP3, specifically)</li>
  <li>command-line; my editor can work with just about any combination of stdin/-out/-err, arguments, temp files, etc.</li>
  <li>reasonably complete XSD support (particularly namespaces and substitution groups)</li>
  <li>reports the line number where the error occurred!</li>
  </ul>
  
  <p>Does such a tool exist?  I'd prefer not to have to install Visual Studio and friends (too bloated, IMO), but I do already have both Cygwin and Python installed.</p>