/**

 * SyntaxHighlighter

 * http://alexgorbatchev.com/

 *

 * @version

 * 2.0.287 (February 06 2009)

 *

 * @author

 * Alex Gorbatchev

 * 

 * @copyright

 * Copyright (C) 2004-2009 Alex Gorbatchev.

 *

 * Licensed under a GNU Lesser General Public License.

 * http://creativecommons.org/licenses/LGPL/2.1/

 *

 * SyntaxHighlighter is donationware. You are allowed to download, modify and distribute 

 * the source code in accordance with LGPL 2.1 license, however if you want to use 

 * SyntaxHighlighter on your site or include it in your product, you must donate.

 * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate

 */

SyntaxHighlighter.brushes.Xml = function()

{

	function process(match, regexInfo)

	{

		var constructor = SyntaxHighlighter.Match,

			code = match[0],

			tag = new XRegExp('(&lt;|<)[\\s\\/\\?]*(?<name>[:\\w-\\.]+)', 'xg').exec(code),

			result = []

			;

		

		if (match.attributes != null) 

		{

			var attributes,

				regex = new XRegExp('(?<name> [\\w:\\-\\.]+)' +

									'\\s*=\\s*' +

									'(?<value> ".*?"|\'.*?\'|\\w+)',

									'xg');



			while ((attributes = regex.exec(code)) != null) 

			{

				result.push(new constructor(attributes.name, match.index + attributes.index, 'color1'));

				result.push(new constructor(attributes.value, match.index + attributes.index + attributes[0].indexOf(attributes.value), 'string'));

			}

		}



		if (tag != null)

			result.push(

				new constructor(tag.name, match.index + tag[0].indexOf(tag.name), 'keyword')

			);



		return result;

	}

	

	this.regexList = [

		{ regex: new XRegExp('(\\&lt;|<)\\!\\[[\\w\\s]*?\\[(.|\\s)*?\\]\\](\\&gt;|>)', 'gm'),			css: 'color2' },	// <![ ... [ ... ]]>

		{ regex: new XRegExp('(\\&lt;|<)!--\\s*.*?\\s*--(\\&gt;|>)', 'gm'),								css: 'comments' },	// <!-- ... -->

		{ regex: new XRegExp('(&lt;|<)[\\s\\/\\?]*(\\w+)(?<attributes>.*?)[\\s\\/\\?]*(&gt;|>)', 'sg'), func: process }

	];

};



SyntaxHighlighter.brushes.Xml.prototype	= new SyntaxHighlighter.Highlighter();

SyntaxHighlighter.brushes.Xml.aliases	= ['xml', 'xhtml', 'xslt', 'html', 'xhtml'];

