summaryrefslogtreecommitdiff
path: root/oox/source/token/parsexsd.pl
diff options
context:
space:
mode:
Diffstat (limited to 'oox/source/token/parsexsd.pl')
-rw-r--r--oox/source/token/parsexsd.pl48
1 files changed, 48 insertions, 0 deletions
diff --git a/oox/source/token/parsexsd.pl b/oox/source/token/parsexsd.pl
new file mode 100644
index 000000000000..3b6745121e4c
--- /dev/null
+++ b/oox/source/token/parsexsd.pl
@@ -0,0 +1,48 @@
+$ARGV = shift @ARGV;
+my %tokens;
+
+my @files = glob("$ARGV/*.rnc");
+
+open( TOKEN, ">tokens.txt" ) || die "can't write token file";
+
+foreach( @files )
+{
+ print( "parsing $_\n" );
+ open ( XSD, $_ ) || die "can't open token file: $!";
+ while( <XSD> )
+ {
+ chomp($_);
+ if( /element (\S*:)?(\S*)/ )
+ {
+ $tokens{$2} = 1;
+ print(".");
+ }
+ elsif( /attribute (\S*:)?(\S*)/ )
+ {
+ $tokens{$2} = 1;
+ print(".");
+ }
+ elsif( /list\s*\{/ )
+ {
+ while( <XSD> )
+ {
+ chomp($_);
+ last if( /^\s*\}/ );
+ if( /"(\S*?)\"/ )
+ {
+ $tokens{$1} = 1;
+ print(".");
+ }
+ }
+ }
+ }
+ close ( XSD );
+
+ print("\n" );
+}
+
+foreach( sort(keys(%tokens)) )
+{
+ print TOKEN "$_\n";
+}
+close( TOKEN );