blob: c02feb845ba5d786b8eafd046a27712cf170eb4e [file] [log] [blame]
/*
* 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.
*/
/*
* Test of XalanCAPI.h
* With Top-Level Parameters
*
*/
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include "xalanc/XalanTransformer/XalanCAPI.h"
int Usage(const char * program)
{
printf("\nUSAGE: %s xml-file stylesheet outfile [parameters...]\n"
" Parameter: -s name \"'string'\"\n"
" Parameter: -n name 123.34532\n"
" Parameter: -d name \"xmlfile\"\n",
program);
return 1;
}
struct {
char * ParmType;
char * ParmName;
char * ParmValue;
} ParamInfo[15];
XalanPSHandle ParamPSHandle[15];
XalanHandle theTransformer;
char * theXmlFile;
char * theXslFile;
char * theOutFile;
int main(int argc, char * argv[])
{
int i,j;
int ParamCount = 0;
if (argc < 4)
return Usage(argv[0]);
theXmlFile = argv[1];
theXslFile = argv[2];
theOutFile = argv[3];
for (i=4, j=0; i<argc ;i++)
{
if (!strcmp(argv[i], "-s") || !strcmp(argv[i], "-n") || !strcmp(argv[i], "-d"))
{
ParamInfo[j].ParmType = argv[i];
i++;
}
else return Usage(argv[0]);
if (i == argc)
return Usage(argv[0]);
ParamInfo[j].ParmName = argv[i];
i++;
if (i == argc)
return Usage(argv[0]);
ParamInfo[j].ParmValue = argv[i];
ParamCount = ++j;
}
XalanInitialize();
theTransformer = CreateXalanTransformer();
if (!theTransformer)
{
printf("ERROR: Unable to Create Xalan Transformer\n");
return Usage(argv[0]);
}
for (i = 0; i < ParamCount; i++)
{
if (!strcmp(ParamInfo[i].ParmType, "-s"))
{
XalanSetStylesheetParam(ParamInfo[i].ParmName,
ParamInfo[i].ParmValue,
theTransformer);
}
else if (!strcmp(ParamInfo[i].ParmType, "-n"))
{
XalanSetStylesheetParamNumber(ParamInfo[i].ParmName,
strtod(ParamInfo[i].ParmValue, NULL),
theTransformer);
}
else if (!strcmp(ParamInfo[i].ParmType, "-d"))
{
if (XalanParseSource(ParamInfo[i].ParmValue,
theTransformer,
&ParamPSHandle[i]))
{
//ERRPR
printf("ERROR: Unable to create Nodeset %s\n",
ParamInfo[i].ParmValue);
return Usage(argv[0]);
}
XalanSetStylesheetParamNodeset(ParamInfo[i].ParmName,
ParamPSHandle[i],
theTransformer);
}
}
if (XalanTransformToFile(theXmlFile, theXslFile, theOutFile, theTransformer))
{
//ERROR
printf("ERROR: Transformation\n%s\n",
XalanGetLastError(theTransformer));
return 1;
}
for (i=0; i < ParamCount; i++)
{
if (!strcmp(ParamInfo[i].ParmType, "-d"))
{
XalanDestroyParsedSource(
ParamPSHandle[i],
theTransformer);
}
}
XalanClearStylesheetParams(theTransformer);
DeleteXalanTransformer(theTransformer);
XalanTerminate(0);
return 0;
}