makeDTD.pl

  1. $sourceTemplateXML="zvonTemplateDTD.xml";
  2. $xslTemplateDirectory="C:/Zvon/Stylesheets/xslStylesheets/Zvon";
  3. $dtdDirectory="C:/Zvon/DTD/Zvon";
  4. $versionDTD="1_00";
  5. $XSL_ENGINE = 'c:\q\jre\bin\java -cp c:\q\xt\xt.jar;c:\q\xp\xp.jar com.jclark.xsl.sax.Driver';
  6. print STDOUT "\n\nValidation started.\n";
  7. chdir $dtdDirectory;
  8. system "v $sourceTemplateXML";
  9. print STDOUT "\n\nStart transformation? [y]: ";
  10. $tmp = <STDIN>;
  11. chomp $tmp;
  12. if (not($tmp eq '' or $tmp eq 'y')) {exit;}
  13. print STDOUT "Root element [$ARGV[0]]: ";
  14. $rootElement = <STDIN>;
  15. chomp($rootElement);
  16. if($rootElement eq ""){$rootElement=$ARGV[0];};
  17. print STDOUT "Use schema [$ARGV[1]]: ";
  18. $in = <STDIN>;
  19. chomp($in);
  20. if($in eq ""){$in=$ARGV[1];};
  21. $finalDTD="$rootElement\_$versionDTD.dtd";
  22. print "\nfinal DTD : $finalDTD \n\n";
  23. if($finalDTD eq ""){$finalDTD=$temp;};
  24. if (not
  25. (open
  26. (TEMPLATE, ">$xslTemplateDirectory/dtdTemplateConditions.xsl")
  27. )
  28. )
  29. {print STDOUT "$xslTemplateDirectory/dtdTemplateConditions.xsl failed";};
  30. print TEMPLATE
  31. "<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' >
  32. <xsl:variable name='rootElement'>$rootElement</xsl:variable>
  33. <xsl:variable name='in'>$in</xsl:variable>
  34. </xsl:stylesheet>";
  35. close TEMPLATE;
  36. $xmlFile = $sourceTemplateXML;
  37. $xmlFile =~ s/\//\\/g;
  38. $xslFile = "$xslTemplateDirectory/zvonDTD_2_10.xsl";
  39. $xslFile =~ s/\//\\/g;
  40. $dtdFile = $finalDTD;
  41. $dtdFile =~ s/\//\\/g;
  42. system "$XSL_ENGINE $xmlFile $xslFile $dtdFile ";
  43. if (!(open("FILE",$dtdFile))) {print "Open $dtdFile failed";exit;};
  44. read (FILE,$text,1000000);
  45. close FILE;
  46. $text=~s/\<\;/\</g;
  47. $text=~s/\>\;/\>/g;
  48. if (!(open(OUT,">$dtdFile"))) {print "\nOutput file $dtdFile was not created\n";exit;};
  49. print OUT $text;
  50. close OUT;
  51. print STDOUT "\n\nShow generated DTD? [n]: ";
  52. $tmp = <STDIN>;
  53. chomp $tmp;
  54. if ($tmp eq 'n' or $tmp eq '') {exit;}
  55. system("notepad $dtdFile");