<?xml version="1.0" standalone="no"?>
<!--
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You 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
		  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 &XercesC3InstallDir;/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
          processor speed.</note>
        </s3>
    </s2>
</s1>
