<?xml version="1.0" standalone="no"?>
<!--
 * Copyright 1999-2005 The Apache Software Foundation.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
-->

<!DOCTYPE s1 SYSTEM "sbk:/style/dtd/document.dtd">

<s1 title="Sample: StdInParse">

    <s2 title="StdInParse">
        <p>StdInParse demonstrates streaming XML data from standard input.</p>

        <s3 title="Running StdInParse">
          <p>The StdInParse sample parses an XML file from standard input and prints out a
		  count of the number of
          elements in the file. To run StdInParse, enter the following: </p>
<source>StdInParse &lt; &lt;XML file&gt;</source>
          <p>The following parameters may be set from the command line </p>
<source>
Usage:
    StdInParse [options] &lt; &lt;XML file&gt;

This program demonstrates streaming XML data from standard
input.  It then uses the SAX Parser, and prints the
number of elements, attributes, spaces and characters found
in the input, using SAX API.

Options:
    -v=xxx      Validation scheme [always | never | auto*].
    -n          Enable namespace processing. Defaults to off.
    -s          Enable schema processing. Defaults to off.
    -f          Enable full schema constraint checking. Defaults to off.
    -?          Show this help.

  * = Default if not provided explicitly.
</source>
          <p><em>-v=always</em> will force validation<br/>
             <em>-v=never</em> will not use any validation<br/>
             <em>-v=auto</em> will validate if a DOCTYPE declaration or a schema declaration is present in the XML document</p>
          <p>Make sure that you run StdInParse in the samples/data directory.</p>
          <p>Here is a sample output from StdInParse:</p>
<source>cd &XercesCInstallDir;-linux/samples/data
StdInParse -v=always &lt; personal.xml
stdin: 10 ms (37 elems, 12 attrs, 0 spaces, 268 chars)</source>
          <p>Running StdInParse with the validating parser gives a different result because
          ignorable white-space is counted separately from regular characters.</p>
<source>StdInParse -v=never &lt; personal.xml
stdin: 10 ms (37 elems, 12 attrs, 0 spaces, 268 chars)</source>
          <p>Note that the sum of spaces and characters in both versions is the same.</p>

          <note>The time reported by the program may be different depending on your
          machine processor.</note>
        </s3>
    </s2>
</s1>
