예제 #1
0
                   help='merge the result with the target datastream (only works for flat xmls)')
parser.add_argument('--test', action='store_true',
                   help='do not change target datastream, instead print the result')

args = parser.parse_args()

client = FedoraClient(url="http://localhost:8080/fedora",password="")

xslt_tree = etree.parse(args.xslt_path)
transform = etree.XSLT(xslt_tree)
parser = etree.XMLParser(remove_blank_text=True)

for line in open(args.pid_file,'r'):
	try:
		pid = line[0:-1]
		response, body = client.getDatastreamDissemination(pid,args.source_dsId)
		orig_tree = etree.fromstring(body,parser)
		result_tree = transform(orig_tree, object_id=("'%s'" % pid.split(':')[1]))
		if args.merge:
			response, body = client.getDatastreamDissemination(pid,args.target_dsId)
			merge_tree = etree.fromstring(body,parser)
			for child in list(result_tree.getroot()):
				if child.text:
					merge_tree.append(child)
			etree.cleanup_namespaces(merge_tree)
			content = etree.tostring(merge_tree, pretty_print=True)
		else:
			content = etree.tostring(result_tree, pretty_print=True)
		if args.test:
			print "%s - content: %s" % (pid,content)
		else:
예제 #2
0
#!/usr/bin/env python

from fedorarest import FedoraClient
from lxml import etree
import fileinput

client = FedoraClient(url="http://localhost:8080/fedora",password="")

parser = etree.XMLParser(remove_blank_text=True)

for line in fileinput.input():
	pid = line[0:-1]
	response, body = client.getDatastreamDissemination(pid,"DC")
	tree = etree.fromstring(body,parser)
	for el in tree.xpath('//dc:title',namespaces={'dc': 'http://purl.org/dc/elements/1.1/'}):
		if el.text.startswith("urn:nbn:de"):
			 el.getparent().remove(el)
	content = etree.tostring(tree, pretty_print=True)
	response, body = client.addDatastream(pid,"DC",content)
	print "%s - status: %s" % (pid,response["status"])