ivanblue
asked on
Search for word or phrase in XML generating highlighted text using XSLT
Hello, I need to search for a word or phrase inside an XML document and generate an HTML result page. I don't know if I can do this using XSLT or some other technology. I'm using PHP v5.2.17.
This is a sample of my XML:
And the generated HTML should show the "impuesto", the "articulo" and the paragraph "p" or "titulo" where the searched text is contained, highlighting it:
(Search word: "scelerisque")
How can I accomplished this? Thanks.
This is a sample of my XML:
<?xml version="1.0" encoding="ISO-8859-1"?>
<impuesto>
	<titulo>Renta del Pequeño Contribuyente</titulo>
	<ley_articulo>
		<titulo>Ley 2421/04</titulo>
		
		<contenido>
			<p>Concordada con los Decretos Nº 8.593/06 , decreto 5610/10 y la Res. Nº 44/10 Art. con su anexo A y B</p>
			
			<p><strong>Definiciones y Conceptos</strong></p>
			
			<decreto>
				<titulo>Decreto Nº 8.593/06</titulo>
				<contenido>
					<p><strong>Artículo 1º - Conceptos</strong> Para la aplicación del Impuesto a la Renta del Pequeño Contribuyente se tendrán en cuenta los conceptos, 	definiciones y aclaraciones indicadas en este artículo:</p>
					<p><strong>a) Administración o Administración Tributaria:</strong> La Subsecretaría de Estado de Tributación del Ministerio de Hacienda, creada por Ley Nº 109/91 y sus modificaciones.</p>
					<p><strong>b) Cese o clausura de actividades o cierre definitivo de negocios:</strong> Proceso formal mediante el cual concluyen definitivamente las actividades económicas de un Contribuyente afectadas al presente Impuesto. Este concepto no incluye a la "clausura" como sanción, establecida por el Artículo 174 de la ley; tampoco incluye la suspensión temporal de actividades del negocio, entendiéndose temporal hasta que se presente a la Administración Tributaria la Declaración Jurada de Cierre a que se refiere el Artículo 14 "Cese o Clausura de Actividades" de este Decreto.</p>
				</contenido>
			</decreto>
		
			<decreto>
				<titulo>Decreto Nº 5.697/10</titulo>
				<contenido>
					<p>Modificase el literal c) del Artículo 1º del Decreto Nº 8593/2006, el cual queda redactado de la siguiente manera:</p>
					<p><strong>c) Comprobante de Venta:</strong> Documento autorizado por la Administración Tributaria para respaldar actos de compra, venta, contrataciones y prestaciones de servicios. Su timbrado, uso y documentos complementarios se rigen por el Decreto Nº 6539/2005 y sus normas modificatorias y complementarias".</p>
					<p><strong>d) Empresa Unipersonal:</strong> Toda unidad productiva perteneciente a una persona física, en la que se utilice en forma conjunta el capital y el trabajo, propios o ajenos, en cualquier proporción, con el objeto de obtener un resultado económico, con excepción de los servicios de carácter personal.</p>
					<p>A los fines del Impuesto, las empresas individuales de responsabilidad limitada, los condominios de personas físicas y las sucesiones indivisas son consideradas empresas unipersonales.</p>
					<p><strong>e) Impuesto o IRPC:</strong> Impuesto a la Renta del Pequeño Contribuyente.</p>
					<p><strong>f) Ley:</strong> La Ley Nº 125/91, con sus modificaciones.</p>
					<p><strong>g) Servicio de carácter personal:</strong> Aquel para cuya realización es preponderante la utilización del factor trabajo.</p>
					<p><strong>h) Servicio no personal:</strong> Aquel para cuya realización es necesaria la utilización conjunta del capital y del trabajo en cualquier proporción o aquél en cuya realización se utiliza de forma exclusiva el factor capital.</p>
				</contenido>
			</decreto>
		
			<resolucion>
				<titulo>Resolución Nº 1560/06</titulo>
				<contenido>
					<p><strong>Artículo 1º - Conceptos</strong> Para la aplicación de la presente Resolución se tendrán en cuenta los conceptos, definiciones y aclaraciones indicadas en este artículo:</p>
					<p><strong>a) Administración o Administración Tributaria:</strong> La Subsecretaria de Estado de Tributación del Ministerio de Hacienda, creada por Ley Nº 109/91 y sus modificaciones.</p>
					<p><strong>b) Impuesto o IRPC:</strong> Impuesto a la Renta del Pequeño Contribuyente.</p>
					<p><strong>c) Ley:</strong> La Ley Nº 125/91, con sus modificaciones. </p>
					<p><strong>d) Decreto:</strong> El Decreto Nº 8593 de fecha 11 de diciembre de 2006.</p>
					<p><strong>e) IRACIS:</strong> Impuesto a la Renta Comercial, Industrial o de Servicios.</p>
					<p><strong>f) IVA:</strong> Impuesto al Valor Agregado</p>
				</contenido>
			</resolucion>
			<resolucion>
				<titulo>Resolución Nº 44/10Art. 1º.-</titulo>
				<contenido>
					<p>Modifícase el literal g) del Artículo 1º de la Resolución Nº 1560/06, que quedará redactado del siguiente modo:</p>
					<p><strong>g) Comprobantes:</strong> Las facturas, Boletas de Ventas, Tickets, Autofacturas y demás documentos previstos en el Decreto N° 6539/05 y sus normas modificatorias y complementarias.".</p>
				</contenido>
			</resolucion>
			
		</contenido>
	</ley_articulo>		
	
	<ley_articulo>
		<titulo>Artículo 42 - Primer Párrafo</titulo>
		<contenido>
			<p><strong>Hecho Generador:</strong> El Impuesto a la Renta del Pequeño Contribuyente Gravará los ingresos provenientes de la realización de actividades comerciales, industriales o de servicio que no sean de carácter personal.</p>
			<decreto>
				<titulo>Decreto Nº 8.593/06</titulo>
				<contenido>
					<p>Artículo 2º - Objeto: El Impuesto grava los ingresos de fuente paraguaya provenientes de la realización de actividades comerciales, industriales o de servicios que no sean de carácter personal, obtenidos por los sujetos pasivos definidos en el Artículo 3º del presente Reglamento.</p>
				</contenido>
			</decreto>
		</contenido>
	</ley_articulo>
</impuesto>
And the generated HTML should show the "impuesto", the "articulo" and the paragraph "p" or "titulo" where the searched text is contained, highlighting it:
(Search word: "scelerisque")
<table class="table table-hover">
	<thead>
		<tr>
			<th colspan="3">Resultados de la búsqueda</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td width="100"><a href="#">IVA</a></td>
			<td width="100"><a href="#">Artículo 1</a></td>
			<td>Cras sit amet nibh libero, in gravida nulla. Nulla vel metus <span class="highlighted">scelerisque</span> ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.</td>
		</tr>
		<tr>
			<td><a href="#">IVA</a></td>
			<td><a href="#">Artículo 3</a></td>
			<td>Cras sit amet nibh libero, in gravida nulla. Nulla vel metus <span class="highlighted">scelerisque</span> ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.</td>
		</tr>
		<tr>
			<td><a href="#">IMAGRO</a></td>
			<td><a href="#">Artículo 2</a></td>
			<td>Cras sit amet nibh libero, in gravida nulla. Nulla vel metus <span class="highlighted">scelerisque</span> ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.</td>
		</tr>
	</tbody>
</table>
How can I accomplished this? Thanks.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
if all you're doind us parsing the xml document, then you dont need xslt or xpath.
php has a funtion 'simpleXMLelement' which would what you need. have a look here
http://www.sitepoint.com/parsing-xml-with-simplexml/
php has a funtion 'simpleXMLelement' which would what you need. have a look here
http://www.sitepoint.com/parsing-xml-with-simplexml/
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Open in new window
The result searching for the word "impuesto" should be:
Open in new window
I read this could be achievable using XPath instead of XSLT.
Thanks.