/**

 * SyntaxHighlighter

 * http://alexgorbatchev.com/

 *

 * SyntaxHighlighter is donationware. If you are using it, please donate.

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

 *

 * @version

 * 2.1.364 (October 15 2009)

 * 

 * @copyright

 * Copyright (C) 2004-2009 Alex Gorbatchev.

 *

 * @license

 * This file is part of SyntaxHighlighter.

 * 

 * SyntaxHighlighter is free software: you can redistribute it and/or modify

 * it under the terms of the GNU Lesser General Public License as published by

 * the Free Software Foundation, either version 3 of the License, or

 * (at your option) any later version.

 * 

 * SyntaxHighlighter is distributed in the hope that it will be useful,

 * but WITHOUT ANY WARRANTY; without even the implied warranty of

 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

 * GNU General Public License for more details.

 * 

 * You should have received a copy of the GNU General Public License

 * along with SyntaxHighlighter.  If not, see <http://www.gnu.org/copyleft/lesser.html>.

 */

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: SyntaxHighlighter.regexLib.xmlComments,												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'];

