- Timestamp:
- 2013-10-10T21:12:21+13:00 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone2/build-src/src/java/org/nzdl/gsdl/ApplyXSLT.java
r25285 r28384 29 29 30 30 import java.io.*; 31 import java.util.HashMap; 32 import java.util.Iterator; 33 import java.util.Map; 34 import java.util.Map.Entry; 31 35 32 36 import javax.xml.transform.Transformer; … … 66 70 private String sourcelang; 67 71 private String targetlang; 68 69 public ApplyXSLT(String sourcelang, String targetlang){ 70 initLanguages(sourcelang, targetlang); 72 private HashMap paramMap; 73 74 public ApplyXSLT(String sourcelang, String targetlang, HashMap param_map){ 75 initParams(sourcelang, targetlang, param_map); 71 76 } 72 77 73 public ApplyXSLT(String xsl_file, String sourcelang, String targetlang )78 public ApplyXSLT(String xsl_file, String sourcelang, String targetlang, HashMap param_map) 74 79 { 75 80 this.xsl_file = xsl_file; 76 init Languages(sourcelang, targetlang);77 } 78 79 public ApplyXSLT(String xsl_file, String sourcelang, String targetlang, String mapping_file) {81 initParams(sourcelang, targetlang, param_map); 82 } 83 84 public ApplyXSLT(String xsl_file, String mapping_file, String sourcelang, String targetlang, HashMap param_map) { 80 85 this.xsl_file = xsl_file; 81 86 this.mapping_file = mapping_file; 82 init Languages(sourcelang, targetlang);83 } 84 85 private void init Languages(String sourcelang, String targetlang)87 initParams(sourcelang, targetlang, param_map); 88 } 89 90 private void initParams(String sourcelang, String targetlang, HashMap param_map) 86 91 { 87 92 this.sourcelang = sourcelang; … … 91 96 this.sourcelang = "en"; 92 97 } 98 99 // any custom parameters to be passed into the XSLT would be in the map by now 100 paramMap = param_map; 93 101 } 94 102 … … 170 178 Transformer transformer = tFactory.newTransformer(new StreamSource(xsl_file)); 171 179 172 setTransformer LanguageParams(transformer); // sourcelang and targetlang180 setTransformerParams(transformer); // sourcelang and targetlang and any further custom parameters to be passed into the XSLT 173 181 174 182 transformer.transform(new StreamSource(str), new StreamResult(new FileOutputStream(output_file))); … … 189 197 190 198 transformer.setParameter("mapping",mapping); 191 setTransformer LanguageParams(transformer); // sourcelang and targetlang199 setTransformerParams(transformer); // sourcelang and targetlang and any further custom parameters to be passed into the XSLT 192 200 193 201 Document output_doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument(); … … 305 313 } 306 314 307 private void setTransformer LanguageParams(Transformer transformer)315 private void setTransformerParams(Transformer transformer) 308 316 { 309 317 if(targetlang != "") { 310 318 transformer.setParameter("sourcelang",sourcelang); 311 319 transformer.setParameter("targetlang",targetlang); 312 } 320 } 321 322 // handle any custom parameters that are also to be passed into the XSLT 323 Iterator i = paramMap.entrySet().iterator(); 324 while(i.hasNext()) { 325 Map.Entry entry = (Map.Entry)i.next(); 326 String paramName = (String)entry.getKey(); 327 String paramValue = (String)entry.getValue(); 328 329 transformer.setParameter(paramName, paramValue); 330 } 331 313 332 } 314 333 … … 326 345 } 327 346 328 setTransformer LanguageParams(transformer); // sourcelang and targetlang347 setTransformerParams(transformer); // sourcelang and targetlang and any further custom parameters to be passed into the XSLT 329 348 transformer.transform(new StreamSource(new File(xml_file)),new StreamResult(output)); 330 349 … … 393 412 String targetlang=""; 394 413 414 HashMap paramMap = new HashMap(); 415 int index = -1; // index of the '=' sign in cmdline argument specifying custom parameters to be passed into the XSLT 416 395 417 // Checking Arguments 396 418 if(args.length < 1) … … 427 449 printUsage(); 428 450 } 451 else if ((index = args[i].indexOf("=")) != -1) { // custom parameters provided on the cmdline in the form paramName1=paramValue1 paramName2=paramValue2 etc 452 // that are to be passed into the XSLT 453 String paramName = args[i].substring(0, index); 454 String paramValue = args[i].substring(index+1); // skip the = sign 455 paramMap.put(paramName, paramValue); 456 index = -1; 457 } 429 458 else{ 430 459 printUsage(); 431 460 } 432 461 433 462 } 434 463 … … 438 467 if (xml_file.equals("") && !xsl_file.equals("")){//read from pipe line 439 468 if (mapping_file.equals("")){ 440 core = new ApplyXSLT(xsl_file, sourcelang, targetlang );469 core = new ApplyXSLT(xsl_file, sourcelang, targetlang, paramMap); 441 470 } 442 471 else{ 443 core = new ApplyXSLT(xsl_file, mapping_file, sourcelang, targetlang);472 core = new ApplyXSLT(xsl_file, mapping_file, sourcelang, targetlang, paramMap); 444 473 } 445 474 … … 452 481 } 453 482 else if(!xml_file.equals("") && !xsl_file.equals("")){ 454 core = new ApplyXSLT(sourcelang, targetlang );483 core = new ApplyXSLT(sourcelang, targetlang, paramMap); 455 484 try { 456 485 core.translate(xml_file,xsl_file,output_file); … … 473 502 474 503 private static void printUsage(){ 475 System.out.println("Usage: ApplyXSLT -x File -t File [-m File] [-o File] [-s sourcelang] [-l targetlang] ");504 System.out.println("Usage: ApplyXSLT -x File -t File [-m File] [-o File] [-s sourcelang] [-l targetlang] [param-name=param-value]"); 476 505 System.out.println("\t-x specifies the xml file (Note: optional for piped xml data)"); 477 506 System.out.println("\t-t specifies the xsl file"); … … 480 509 System.out.println("\t-s specifies the input language code for generating TMX file. Defaults to 'en' if none is provided"); 481 510 System.out.println("\t-l specifies the output language code. Required if generating a TMX file."); 511 System.out.println("\tFor general transformations of an XML by an XSLT, you can pass in parameter name=value pairs if any need to passed on into the XSLT as xsl params."); 482 512 System.exit(-1); 483 513 }
Note:
See TracChangeset
for help on using the changeset viewer.