SYNOPSIS

       srcml2src [-nizcgv ] [--language ] [--filename ] [--directory ]

                 [--encoding ] [--src-encoding encoding] [input-srcML-file]

                 [-o output-source-code-file]



DESCRIPTION

       The program srcml2src translates from the XML  source-code  representa-

       tion  srcML  into source code. The srcML format allows for XML address-

       ing, querying, and transformation of source code. The srcML format  for

       a source-code file is typically produced by src2srcml.



       The  combination  of src2srcml and srcml2src allows for full round-trip

       transformation of source-code files without any loss of comments, white

       space, and preprocessing statements.



       Conversion from the srcML format to source code is relatively straight-

       forward. All XML tags are removed and escaped characters are unescaped.

       Special srcML elements for characters not permitted in XML, e.g., form-

       feed, are converted back to their original characters.



       In addition to conversion, srcml2src provides various  srcML  utilities

       such as extracting metadata, extracting individual files in a srcML ar-

       chive (as either text or XML), and extracting metadata from  individual

       files in a srcML archive.  It can also be used to extract all the indi-

       vidual files in a srcML archive.



       Further, srcml2src allows for querying srcML  using  XPath  expressions

       and  RelaxNG,  and  transformation  using XLST. With a srcML archive, a

       query/transformation is applied individually to each file and  the  re-

       sults  combined.  This allows the XPath, XSLT, or RelaxNG to work effi-

       ciently on large srcML documents that contain all of the source code in

       a large project.



       Using the character - in the place of an input srcML file filename uses

       standard input, and in place of an output source-code file  uses  stan-

       dard output.



OPTIONS

       -h, --help

              Output the help and exit.



       -V, --version

              Output the version of srcml2src and exit.



       -t, --src-encoding=encoding

              Sets  the encoding used for the output text source-code files to

              encoding. The default is --ISO-8859-1.



       -U, --unit=number

              Refers to a specific file in a  srcML  archive.   The  numbering

              starts  at  1.  If  the number is outside of the range of nested

              on the output element "unit" are the attributes of the individu-

              al unit with any missing attributes taken from the root unit.



       -z, --compress

              Output is in compressed gzip format.



       --no-xml-declaration

              No output of the default XML declaration for XML output options.

              Useful when the output is to be placed inside another XML  docu-

              ment.



       --no-namespace-decl

              No  output  of  namespace  declarations  for XML output options.

              Useful when the output is to be placed inside another XML  docu-

              ment.



       -v, --verbose

              Verbose output to standard error.



METADATA OPTIONS

       Options  to access to the metadata stored in the srcML document. Unless

       otherwise noted, the metadata is quickly extracted from the start  root

       element  or  the XML declaration and does not traverse the entire docu-

       ment. Output is to standard output.



       -l, --language

              Output the language of the srcML file as stored in the attribute

              "language"  in the element "unit".  The language is the value of

              the attribute of the root element, or for a particular  unit  if

              specified with the --unit option.



       -d, --directory

              Output  the  directory  of  the  srcML file as stored in the at-

              tribute "dir" in the element "unit". The directory is the  value

              of  the  attribute of the root element, or for a particular unit

              if specified with the --unit option.



       -f, --filename

              Output the filename of the srcML file as stored in the attribute

              "filename"  in the element "unit".  The filename is the value of

              the attribute of the root element, or for a particular  unit  if

              specified with the --unit option.



       -s, --src-version

              Output  the  version of the srcML file as stored attribute "ver-

              sion" in the element "unit". The version is the value of the at-

              tribute  of the root element, or for a particular unit if speci-

              fied with the --unit option.



       -p, --prefix=uri

              Output the prefix of the namespace given by uri. The name of the

              prefix is output with a newline character. The default namespace



       -L, --longinfo

              Output the metadata of the --info option along with the count of

              the nested files in a srcML archive. Requires traversal  of  the

              entire srcML document.



QUERYING AND TRANSFORMATION OPTIONS

       Options  for efficiently querying and transformation srcML.  Standalone

       XML tools that are DOM based (XPath, XSLT) have large  memory  require-

       ments  with  large  srcML files. The srcml2src options work efficiently

       with large srcML archives that contain large  numbers  of  files  in  a

       project,  e.g.,  tens of thousands of files for a project in a single 1

       GB srcML archive 1 GB.  All queries/transformations are performed on  a

       unit by unit basis inside the srcML archive.



       --xpath=xpath

              Apply  the XPath expression xpath to each individual unit in the

              srcML archive and combine the results of the individual queries.



              To refer to elements standard srcML prefixes (see srcml2src) are

              used.  One exception is that prefix "src" is used for srcML ele-

              ments, e.g., "src:unit".  Note that these prefixes do  not  have

              to match the prefixes used in the document.



              If  the result of the expression is anything other then a set of

              nodes the individual unit results are combined. For numeric  re-

              sults, e.g., counts, the final result is the sum of the individ-

              ual results. For boolean values, the result is the logical  "or"

              of the individual results.



              The  output is a srcML archive with each XPath expression result

              in its own individual element "unit". If  the  XPath  expression

              does  not  result in a element "unit", one is wrapped around the

              result. This format allows for pipelines of queries  and  trans-

              formations.



       --xslt=xslt_file

              Apply  the  XSLT  program xslt_file to each individual unit in a

              srcML archive and combine the results of the  individual  trans-

              formations.



              The  XSLT  program  can use any part of XSLT 1.0, and many EXSLT

              extension functions.  Since the XSLT program doesn't have access

              to some information on the entire archive, the program is passed

              a series of  internally  generated  parameters.  The  parameters

              src:filename,  src:directory,  src:version, and src:language are

              the corresponding entries from the root element "unit".  The pa-

              rameter  src:position  is  the position of an individual unit in

              the root unit, e.g., the position of the file in the entire  sr-

              cML  archive.  Parameters can also be passed to the XSLT program

              from the srcml2src command line.



       --relaxng=relaxng_file

              Apply  the  RelaxNG grammar relaxng_file to each individual unit

              in the srcML archive and combine the parts that match.



              The RelaxNG grammar  acts  as  a  filter  for  individual  units

              (files).  If  the  RelaxNG gramar is valid for a unit, then that

              unit is output. The result is a  srcML  archive  with  only  the

              files that are valid based on the given RelaxNG grammar.



USAGE

       To  translate the srcML file main.cpp.xml into the C++ source-code file

       main.cpp:



       srcml2src main.cpp.xml -o main.cpp



       To extract the language of the srcML file main.cpp.xml:



       srcml2src --language main.cpp.xml



       To extract the directory of the srcML file main.cpp.xml:



       srcml2src --directory main.cpp.xml



       To extract the filename of the srcML file main.cpp.xml:



       srcml2src --filename main.cpp.xml



       To extract the version of the srcML file main.cpp.xml:



       srcml2src --version main.cpp.xml



       To extract the xml encoding of the srcML file main.cpp.xml:



       srcml2src --encoding main.cpp.xml



RETURN STATUS

       0: Normal



       1: Error



       2: Problem with input file



       3: Unknown option



       4: Unknown encoding



       11: Text encoding option specified, but value missing



       13: Unit option specified, but value missing



       14: Unit option value is not valid





AUTHOR

       Written by Michael L. Collard and Huzefa Kagdi







srcml2src 1.0            Wed Apr 11 13:29:01 EDT 2012             srcml2src(1)


Man(1) output converted with man2html