<?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: PSVIWriter">

    <s2 title="PSVIWriter">
        <p>PSVIWriter shows how to access the PSVI and Schema Component Model 
           information for the parsed document.</p>

        <s3 title="Running PSVIWriter">
          <p>This program parses the specified XML file, then exposes
            the PSVI and Schema Component Model information.</p>
<source>
Usage:
    PSVIWriter [options] &lt;XML file | List file&gt;

This program invokes the SAX2XMLReaderImpl, and then exposes the
underlying PSVI of each parsed XML file, using SAX2 API.

Options:
    -f          Enable full schema constraint checking processing. Defaults to off.
    -o=xxx      Output PSVI to file xxx (default is stdout)
    -e=xxx      Output errors to file xxx (default is stdout)
    -u=xxx      Handle unrepresentable chars [fail | rep | ref*].
    -x=XXX      Use a particular encoding for output (UTF8*).
    -l          Indicate the input file is a List File that has a list of xml files.
                Default to off (Input file is an XML file).
    -?          Show this help.

  * = Default if not provided explicitly.
</source>
          <p>Here is some sample output from PSVWriter (as the output is verbose
             it has been truncated)</p>
<source>cd &XercesCInstallDir;-linux/samples/data
PSVIWriter personal.xml

&lt;document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
             xmlns:psv="http://apache.org/xml/2001/PSVInfosetExtension" 
             xmlns="http://www.w3.org/2001/05/XMLInfoset"&gt;
	&lt;characterEncodingScheme&gt;UTF8&lt;/characterEncodingScheme&gt;
	&lt;standalone xsi:nil="true"/&gt;
	&lt;version&gt;1.0&lt;/version&gt;
	&lt;children&gt;
		&lt;comment&gt;
			&lt;content&gt; @version:  &lt;/content&gt;
		&lt;/comment&gt;

...		
		</source>
        </s3>
    </s2>
</s1>
