AI
Animation
CGI
Compression
Console
Database
Debug
Dialects
Dialogs
Editor
Email
Encryption
Extension
External Library
File
File Handling
Files
Financial
FTP
Game
Games
Graphics
GUI
HTML
HTTP
Internet
LDC
Markup
Math
Module
Network
Networking
None
Other - Net
Parse
Patch
Printing
Protocol
Rebol
Scheme
Scientific
SDK
Security
Shell
Sound
SQL
TCP
Testing
Text
Text Processing
UI
User Interface
Util
Utility
VID
Visualization
Web
Win API
X-File
XML
REBOL [
	Title:		"XML to RebXML Converter"
	Date:		08-Nov-2005
	Version:	1.2.0
	File:		%xml2rebxml.r
	Author:		"John Niclasen"
	Rights:		{Copyright © John Niclasen, NicomSoft 2005}
	Purpose:	{Convert XML to RebXML block structure.}

	Comment:	{
		Build from xml2txt.r and XML 1.0 DTD from www.w3.org.
	}

	History: [
		1.2.0	[08-11-2005 JN {Added suppport for " and ' in Attribute.
								Added preservation of comments.}]
		1.1.2	[06-11-2005 JN {Fixed bug with multi comments.}]
		1.1.1	[24-02-2005 JN {Changed EmptyElemTag from # to a slash: /}]
		1.1.0	[23-02-2005 JN {Added support for namespace-tags.
								Changed EmptyElemTag from "" to a number sign: #}]
		1.0.1	[31-01-2005 JN {Added "load mold" before returning output.
								Added replacements for ">", "<" and "&".}]
		1.0.0	[25-01-2005 JN {Created.}]
	]
	library: [
		level: 'intermediate
		platform: 'all
		type: 'tool
		domain: [markup parse xml]
		tested-under: none
		support: none
		license: 'BSD
		see-also: "rebxml2xml.r"
	]
]

output:	make block! 1000
context [

preserve-comments: false

lit-slash: to-lit-word "/"

block-begin: to word! "["
block-end: to word! "]"
attrs:	make block! 20
;output:	make block! 1000
input-str: none
att-data: data: temp: tag-name: att-name: enc-name: c: none

;-- Character Sets
joinset: func [cset chars] [insert copy cset chars]
diffset: func [cset chars] [remove/part copy cset chars]

space:	charset [#"^(09)" #"^(0A)" #"^(0D)" #" "]
char:	charset [#"^(09)" #"^(0A)" #"^(0D)" #" " - #"^(FF)"]
Letter: charset [
	#"A" - #"Z" #"a" - #"z"
	#"^(C0)" - #"^(D6)" #"^(D8)" - #"^(F6)" #"^(F8)" - #"^(FF)"
]
;Digit:	charset [#"0" - #"9"]
alpha-num:	joinset Letter "0123456789"		; need to allow: Digit
name-first:	joinset Letter "_:"

NameChar:	joinset alpha-num ".-_:"
data-chars:	diffset char "<"	; "&<"
Name:		[name-first any NameChar]
S:			[some space]

;-- XML Rules
document:		[prolog element to end]

AttValue:		["'" copy att-data to "'" skip | {"} copy att-data to {"} skip]

Comment:		["" (
	if preserve-comments [
		insert tail output join "
        
Copyright © 2018 Rebol Software Foundation