=head1 NAME

XML::Rewrite::Schema - transform schemas

=head1 INHERITANCE

 XML::Rewrite::Schema
   is a XML::Rewrite
   is a XML::Compile::Cache
   is a XML::Compile::Schema
   is a XML::Compile

=head1 SYNOPSIS

 my $rewriter = XML::Rewriter::Schema->new(...);
 my ($type, $data) = $rewriter->process($file);
 my $doc = $rewriter->buildDOM($type => $data);

=head1 DESCRIPTION

Implements additional transformations, available for SCHEMA (version 2001)
specific extension.

Feel invited to contribute ideas of useful features.

=head1 METHODS

=head2 Constructors

XML::Rewrite::Schema-E<gt>B<new>([SCHEMA], OPTIONS)

=over 4

 Option               --Defined in     --Default
 allow_undeclared       XML::Compile::Cache  <true>
 any_attribute          XML::Compile::Cache  'ATTEMPT'
 any_element            XML::Compile::Cache  'ATTEMPT'
 attribute_form                          <undef>
 blanks_before          XML::Rewrite     'NONE'
 change                 XML::Rewrite     'TRANSFORM'
 comments               XML::Rewrite     'KEEP'
 defaults_writer        XML::Rewrite     'IGNORE'
 element_form                            <undef>
 expand_includes                         <false>
 hook                   XML::Compile::Schema  undef
 hooks                  XML::Compile::Schema  []
 ignore_unused_tags     XML::Compile::Schema  <false>
 key_rewrite            XML::Compile::Schema  []
 opts_readers           XML::Compile::Cache  []
 opts_rw                XML::Compile::Cache  []
 opts_writers           XML::Compile::Cache  []
 output_compression     XML::Rewrite     <undef>
 output_encoding        XML::Rewrite     <undef>
 output_standalone      XML::Rewrite     <undef>
 output_version         XML::Rewrite     <undef>
 prefixes               XML::Compile::Cache  <smart>
 remove_annotation                       <false>
 remove_elements        XML::Rewrite     []
 remove_id_constraints                   <false>
 schema_dirs            XML::Compile     undef
 target_namespace                        <undef>
 typemap                XML::Compile::Schema  {}
 use_default_namespace  XML::Rewrite     <false>

. allow_undeclared => BOOLEAN

. any_attribute => CODE|'TAKE_ALL'|'SKIP_ALL'|'ATTEMPT'

. any_element => CODE|'TAKE_ALL'|'SKIP_ALL'|'ATTEMPT'

. attribute_form => 'qualified'|'unqualified'

. blanks_before => 'ALL'|'CONTAINERS'|'NONE'

. change => 'REPAIR'|'TRANSFORM'

. comments => 'REMOVE'|'KEEP'

. defaults_writer => 'EXTEND'|'IGNORE'|'MINIMAL'

. element_form => 'qualified'|'unqualified'

. expand_includes => BOOLEAN

=over 4

Include all the "include" files recursively, and merge their content
with the main schema.

=back

. hook => ARRAY-WITH-HOOKDATA | HOOK

. hooks => ARRAY-OF-HOOK

. ignore_unused_tags => BOOLEAN|REGEXP

. key_rewrite => HASH|CODE|ARRAY-of-HASH-and-CODE

. opts_readers => HASH|ARRAY-of-PAIRS

. opts_rw => HASH|ARRAY-of-PAIRS

. opts_writers => HASH|ARRAY-of-PAIRS

. output_compression => -1, 0-8

. output_encoding => CHARSET

. output_standalone => BOOLEAN|'yes'|'no'

. output_version => STRING

. prefixes => HASH|ARRAY-of-PAIRS

. remove_annotation => BOOLEAN

. remove_elements => ARRAY

. remove_id_constraints => BOOLEAN

=over 4

Remove the identity constraints (key, keyref, and unique elements) from
the schema.

=back

. schema_dirs => DIRECTORY|ARRAY-OF-DIRECTORIES

. target_namespace => URI

. typemap => HASH

. use_default_namespace => BOOLEAN

=back

=head2 Accessors

$obj-E<gt>B<addHook>(HOOKDATA|HOOK|undef)

=over 4

See L<XML::Compile::Schema/"Accessors">

=back

$obj-E<gt>B<addHooks>(HOOK, [HOOK, ...])

=over 4

See L<XML::Compile::Schema/"Accessors">

=back

$obj-E<gt>B<addKeyRewrite>(CODE|HASH, CODE|HASH, ...)

=over 4

See L<XML::Compile::Schema/"Accessors">

=back

$obj-E<gt>B<addSchemaDirs>(DIRECTORIES|FILENAME)

XML::Rewrite::Schema-E<gt>B<addSchemaDirs>(DIRECTORIES|FILENAME)

=over 4

See L<XML::Compile/"Accessors">

=back

$obj-E<gt>B<addSchemas>(XML, OPTIONS)

=over 4

See L<XML::Compile::Schema/"Accessors">

=back

$obj-E<gt>B<addTypemap>(PAIR)

=over 4

See L<XML::Compile::Schema/"Accessors">

=back

$obj-E<gt>B<addTypemaps>(PAIRS)

=over 4

See L<XML::Compile::Schema/"Accessors">

=back

$obj-E<gt>B<allowUndeclared>([BOOLEAN])

=over 4

See L<XML::Compile::Cache/"Accessors">

=back

$obj-E<gt>B<hooks>

=over 4

See L<XML::Compile::Schema/"Accessors">

=back

$obj-E<gt>B<prefixes>([PAIRS])

=over 4

See L<XML::Compile::Cache/"Accessors">

=back

=head2 Compilers

$obj-E<gt>B<compile>(('READER'|'WRITER'), TYPE, OPTIONS)

=over 4

See L<XML::Compile::Schema/"Compilers">

=back

$obj-E<gt>B<compileAll>(['READER'|'WRITER'|'RW', [NAMESPACE]])

=over 4

See L<XML::Compile::Cache/"Compilers">

=back

$obj-E<gt>B<dataToXML>(NODE|REF-XML-STRING|XML-STRING|FILENAME|FILEHANDLE|KNOWN)

=over 4

See L<XML::Compile/"Compilers">

=back

$obj-E<gt>B<reader>(TYPE|NAME, OPTIONS)

=over 4

See L<XML::Compile::Cache/"Compilers">

=back

$obj-E<gt>B<template>('XML'|'PERL', TYPE, OPTIONS)

=over 4

See L<XML::Compile::Schema/"Compilers">

=back

$obj-E<gt>B<writer>(TYPE|NAME)

=over 4

See L<XML::Compile::Cache/"Compilers">

=back

=head2 Administration

$obj-E<gt>B<declare>('READER'|'WRITER'|'RW', TYPE|ARRAY-of-TYPES, OPTIONS)

=over 4

See L<XML::Compile::Cache/"Administration">

=back

$obj-E<gt>B<elements>

=over 4

See L<XML::Compile::Schema/"Administration">

=back

$obj-E<gt>B<findName>(NAME)

=over 4

See L<XML::Compile::Cache/"Administration">

=back

$obj-E<gt>B<findSchemaFile>(FILENAME)

=over 4

See L<XML::Compile/"Administration">

=back

$obj-E<gt>B<importDefinitions>(XMLDATA, OPTIONS)

=over 4

See L<XML::Compile::Schema/"Administration">

=back

$obj-E<gt>B<knownNamespace>(NAMESPACE|PAIRS)

XML::Rewrite::Schema-E<gt>B<knownNamespace>(NAMESPACE|PAIRS)

=over 4

See L<XML::Compile/"Administration">

=back

$obj-E<gt>B<namespaces>

=over 4

See L<XML::Compile::Schema/"Administration">

=back

$obj-E<gt>B<printIndex>([FILEHANDLE], OPTIONS)

=over 4

See L<XML::Compile::Cache/"Administration">

=back

$obj-E<gt>B<types>

=over 4

See L<XML::Compile::Schema/"Administration">

=back

$obj-E<gt>B<walkTree>(NODE, CODE)

=over 4

See L<XML::Compile/"Administration">

=back

=head2 Processing

$obj-E<gt>B<buildDOM>(TYPE, DATA, OPTIONS)

=over 4

See L<XML::Rewrite/"Processing">

=back

$obj-E<gt>B<process>(XMLDATA, OPTIONS)

=over 4

See L<XML::Rewrite/"Processing">

=back

$obj-E<gt>B<repairXML>(TYPE, XML, DETAILS)

=over 4

See L<XML::Rewrite/"Processing">

=back

$obj-E<gt>B<transformData>(TYPE, DATA, DETAILS)

=over 4

See L<XML::Rewrite/"Processing">

=back

=head1 DETAILS

=head1 DIAGNOSTICS

Error: cannot find pre-installed name-space files

=over 4

Use C<$ENV{SCHEMA_LOCATION}> or L<new(schema_dirs)|XML::Compile/"Constructors"> to express location
of installed name-space files, which came with the L<XML::Compile|XML::Compile>
distribution package.

=back

Error: don't known how to interpret XML data

=over 4

=back

=head1 SEE ALSO

This module is part of XML-Rewrite distribution version 0.10,
built on August 11, 2008. Website: F<http://perl.overmeer.net/xml-compile/>

All modules in this suite:
L<XML::Compile>,
L<XML::Compile::SOAP>,
L<XML::Compile::SOAP::Daemon>,
L<XML::Compile::Tester>,
L<XML::Compile::Cache>,
L<XML::Rewrite>,
L<XML::Compile::Dumper>.

Please post questions or ideas to the mailinglist at
F<http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/xml-compile>
For life contact with other developers, visit the C<#xml-compile> channel
on C<irc.perl.org>.

=head1 LICENSE

Copyrights 2008 by Mark Overmeer. For other contributors see ChangeLog.

This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
See F<http://www.perl.com/perl/misc/Artistic.html>

