APEXlang Format
APEXlang is a block-oriented DSL for representing Oracle APEX applications as text files. It ships with Oracle APEX 26.1 and is the native export format understood by uc-apx.
Basic Syntax
Section titled “Basic Syntax”An APEXlang file is a collection of constructs. Each construct has a keyword, an ID, and a body of properties, blocks, and children:
construct ID ( name: Foo block { prop: value nestedBlock { ... } } child CHILD_ID ( ... ))Real Example
Section titled “Real Example”page 10 ( name: Employees alias: EMPLOYEES title: Employees
region EMP_REGION ( name: Employees type: interactiveReport source { type: sqlQuery sqlQuery: ```sql select empno, ename, job, sal from emp ``` } ))Constructs
Section titled “Constructs”A construct is keyword ID ( ... ). Common keywords:
| Keyword | What it represents |
|---|---|
page | An APEX page |
region | A region on a page (report, form, chart, etc.) |
pageItem | A page item (text field, select list, etc.) |
button | A button |
branch | An after-submit navigation branch |
process | A page process |
validation | A page validation |
dynamicAction | A dynamic action |
lov | A shared list of values |
authorization | A shared authorization scheme |
References
Section titled “References”Constructs refer to each other using @ references:
| Reference form | Meaning |
|---|---|
@APEX$123456 | GUID reference (pre-release 26.1.0-62 format) |
@aliasName | Name/alias reference (GA 26.1.0+3102 format) |
@/template-name | System template (built into APEX — e.g. @/standard, @/drawer) |
Example:
region breadcrumb-region ( breadcrumb: @SITE_BREADCRUMB breadcrumbTemplate: @/breadcrumb)Code Blocks
Section titled “Code Blocks”Inline code uses triple backticks with a language tag:
source { type: sqlQuery sqlQuery: ```sql select empno, ename, deptno from emp where deptno = :P10_DEPTNO ```}Supported language tags: sql, plsql, javascript-browser, css, html.
Arrays
Section titled “Arrays”Array values are whitespace-separated inside square brackets:
column EMPNO ( queryColumn: EMPNO queryColumnList: [ EMPNO ENAME JOB SAL DEPTNO ])Markers
Section titled “Markers”Special tokens passed through verbatim: #DEFAULT#, #MIN#, #APP_FILES#. These are APEX substitution strings that resolve at runtime.
Directory Layout
Section titled “Directory Layout”uc-apx expects the standard APEXlang export structure:
my-app/├── .apex/│ └── apexlang.json # mmdVersion + app metadata├── application.apx # app-level settings├── page-groups.apx├── pages/│ ├── p00001-home.apx│ ├── p00010-employees.apx│ └── ...├── shared-components/│ ├── lovs.apx│ ├── lists.apx│ ├── breadcrumbs.apx│ ├── authentications.apx│ └── ...└── supporting-objects/The walker picks up every .apx file under the app directory recursively, so plugins, themes, and workspace components are all indexed automatically.
MMD Versions
Section titled “MMD Versions”The mmdVersion field in .apex/apexlang.json identifies the export format version. uc-apx supports:
| Version | Format notes |
|---|---|
26.1.0+3102 | GA format — human-readable IDs, name: { ... } block-valued properties, single-quoted IDs allowed |
26.1.0-62 | Pre-release format — APEX$NNN GUID-style IDs |