Changeset 30585
- Timestamp:
- 2016-06-20T12:40:19+12:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/util/GSXSLT.java
r27716 r30585 22 22 import java.util.ArrayList; 23 23 import java.util.HashMap; 24 import java.util.HashSet; 24 25 import java.util.Vector; 25 26 … … 404 405 } 405 406 407 408 public static void findExtraMetadataNames(Element xsl_elem, HashSet<String> meta_names) { 409 410 // gsf:metadata and gsf:foreach-metadata 411 NodeList metadata_nodes = xsl_elem.getElementsByTagNameNS(GSXML.GSF_NAMESPACE, "metadata"); 412 NodeList foreach_metadata_nodes = xsl_elem.getElementsByTagNameNS(GSXML.GSF_NAMESPACE, "foreach-metadata"); 413 int num_meta_nodes = metadata_nodes.getLength(); 414 int total_nodes = num_meta_nodes +foreach_metadata_nodes.getLength(); 415 for (int i = 0; i < total_nodes; i++) { 416 Element current; 417 if (i<num_meta_nodes) { 418 current = (Element) metadata_nodes.item(i); 419 } else { 420 current = (Element) foreach_metadata_nodes.item(i-num_meta_nodes); 421 } 422 String full_name = current.getAttribute("name"); 423 String select = current.getAttribute("select"); 424 425 String [] names = full_name.split(","); 426 for(int j=0; j<names.length; j++) { 427 428 String name = names[j]; 429 if (!name.equals("")) { 430 if (!select.equals("")) { 431 name = select + GSConstants.META_RELATION_SEP + name; 432 } 433 meta_names.add(name); 434 } 435 } 436 } 437 438 // gsf:link 439 boolean getEquivLinkMeta = false; 440 NodeList link_nodes = xsl_elem.getElementsByTagNameNS(GSXML.GSF_NAMESPACE, "link"); 441 for (int i = 0; i < link_nodes.getLength(); i++) { 442 443 Element elem = (Element) link_nodes.item(i); 444 String type = elem.getAttribute("type"); 445 if (type.equals("source")) 446 { 447 meta_names.add("assocfilepath"); 448 meta_names.add("srclinkFile"); 449 } 450 else if (type.equals("web")) 451 { 452 meta_names.add("weblink"); 453 meta_names.add("webicon"); 454 meta_names.add("/weblink"); 455 } 456 else if (type.equals("equivdoc")) 457 { 458 getEquivLinkMeta = true; // equivalent to gsf:equivlinkgs3 459 } 460 } 461 // gsf:equivlinkgs3 462 link_nodes = xsl_elem.getElementsByTagNameNS(GSXML.GSF_NAMESPACE, "equivlinkgs3"); 463 if (getEquivLinkMeta || link_nodes.getLength() > 0) { 464 465 String[] equivlink_metanames = { "equivDocIcon", "equivDocLink", "/equivDocLink" }; 466 467 for (int i = 0; i < equivlink_metanames.length; i++) 468 { 469 StringBuffer metadata = new StringBuffer(); 470 metadata.append("all"); // this means the attr multiple = true; 471 metadata.append(GSConstants.META_RELATION_SEP); 472 473 metadata.append(GSConstants.META_SEPARATOR_SEP); 474 metadata.append(','); // attr separator = "," 475 metadata.append(GSConstants.META_SEPARATOR_SEP); 476 metadata.append(GSConstants.META_RELATION_SEP); 477 478 // the name of the metadata we're retrieving 479 metadata.append(equivlink_metanames[i]); 480 meta_names.add(metadata.toString()); 481 } 482 } 483 484 // gsf:icon 485 NodeList icon_nodes = xsl_elem.getElementsByTagNameNS(GSXML.GSF_NAMESPACE, "icon"); 486 for (int i = 0; i < icon_nodes.getLength(); i++) { 487 Element current = (Element) icon_nodes.item(i); 488 String type = current.getAttribute(GSXML.TYPE_ATT); 489 if (type == null || type.length() == 0) { 490 continue; 491 } 492 if (type.equals("web")) { 493 meta_names.add("webicon"); 494 break; // this is the only one we are looking for at the moment 495 } 496 } 497 498 // gsf:image 499 NodeList image_nodes = xsl_elem.getElementsByTagNameNS(GSXML.GSF_NAMESPACE, "image"); 500 for (int i = 0; i < image_nodes.getLength(); i++) { 501 Element current = (Element) image_nodes.item(i); 502 String type = current.getAttribute(GSXML.TYPE_ATT); 503 if (type == null || type.length() == 0) { 504 continue; 505 } 506 507 if (type.equals("source")) { 508 509 String[] standardSourceMeta = new String[] { "SourceFile", "ImageHeight", "ImageWidth", "ImageType", "srcicon" }; 510 for (String meta : standardSourceMeta) { 511 meta_names.add(meta); 512 } 513 514 } 515 else if (type.equals("screen")) { 516 517 String[] standardScreenMeta = new String[] { "Screen", "ScreenHeight", "ScreenWidth", "ScreenType", "screenicon" }; 518 for (String meta : standardScreenMeta) { 519 meta_names.add(meta); 520 } 521 } 522 else if (type.equals("thumb")) { 523 String[] standardThumbMeta = new String[] { "Thumb", "ThumbHeight", "ThumbWidth", "ThumbType", "thumbicon" }; 524 for (String meta : standardThumbMeta) { 525 meta_names.add(meta); 526 } 527 } 528 else if (type.equals("cover")) { 529 meta_names.add("hascover"); 530 logger.error("adding hascover"); 531 } 532 } 533 } 534 406 535 /** 407 536 * looks through a stylesheet for <xxx:template match='template_name'>
Note:
See TracChangeset
for help on using the changeset viewer.