XML Programming Language

|  This page may qualify for speedy deletion because: almost nothing to learn from here; the idea of encoding a programming language in XML is obvious anyway; the stated aim of developing a Turing-complete macro language of XML format was not realized at all; has been so since October 2018‎ (moving to user space is fine)
If you disagree or intend to fix it, and you have not contributed to it before, you may remove this notice. If you have contributed before and disagree, please explain why on the discussion page, after adding {{hangon}} to the top of the . This will alert curators and custodians to your intention, and may permit you the time to write your explanation.

* * *

Before deleting check the discussion page, what links here, history (last edit), the page log, and Wikiversity:Deletions.

|

|  This resource includes primary and/or secondary research. Learn more about original research at Wikiversity.

|

| Educational level: this is a research resource.

|

| Educational level: this is a tertiary (university) resource.

|

| Educational level: this is a non-formal education resource.

|

| Subject classification: this is an information technology resource.

|

This research project in applied computer science aims to write a specification to develop a Turing-complete macro language of XML format (XMLPL).

Operators and other building blocks of XMLPL are pertaining to a certain namespace (temporarily we will use `http://portonvictor.org/ns/XMLPL`). We will assume through this specification that this namespace is bound to `prog` XML prefix.

Every XML file without elements and attributes of this namespace is a valid XMLPL program whose output is itself (that is the XML file without changes).

XMLPL provides a "macro" facility for XML, for tasks ranging from eliminating repetitive typing to full featured programming.

## Macroses[edit | edit source]

A fundamental construct of XMLPL are macroses. Macroses are defined like this:

<prog:macro name="f">
<prog:arguments>
<prog:argument name="x"/>
<prog:argument name="y"/>
</prog:arguments>
<prog:body>
<prog:value name="x"/> then <prog:value name="y"/>
</prog:body>
</prog:macro>

A macro can be defined before or after use.

I propose to allow macroses inside other macroses. (This way enclosed macroses may server like a temporary variable.)

## Quoting[edit | edit source]

Tag `<prog:quote>` preserves its content verbatim (used to include `<prog:*>` tags into the output).